Seite 1 von 1

Kann mir einer bei diesem Makro helfen?

Verfasst: Do, 29.06.2006 16:50
von icecube1307
hallo, ich habe ein makro aus excel..es ist sehr kurz..wäre nett, wenn einer von euch mir helfen könnte es unter open office zum laufen zu bringen!

Sub ReNr_eintragen()

Dim Lst As Object, Rech As Object
Dim Nr As Long, z As Long

Set Lst=Sheets("Rechnungsdatenbank")
Set Rech=ActiveSheet

z=Lst.Range("A1").CurrentRegion.Rows.Count

Nr=Lst.Cells(z,1).Value

Rech.Range("F11").Value=Nr+1

End Sub

Verfasst: Do, 29.06.2006 18:00
von Toxitom
Hey Icecube,

Hmm, ich glaube, du machst es dir ein bischen einfach. "Mal so eben" hilft dir wenig, wenn du nicht verstehst, wie das System arbeitet und wie die Objekte "funktionieren".
Auch fehlt für eine sinnvolle Umstellung ein wenig Information: Was macht das Makro, wie rufst du es auf, was willst du erreichen etc.
Der unten stehende Code "macht" in etwa das, was ich aus dem Excel Makro herauslese - ich denke aber, das kann nicht alles sein. Wie führst du die Liste der Rechnungsnummern fort? Wie wird die letzte Nummer eingetragen? Wie rufst du das Makro auf? Na ja, und vieles mehr. Ich denke, der Code alleine nützt dir wenig...

Code: Alles auswählen

sub ReNr_eintragen
  Dim oLst as object, oRech as object, oRange as object
  Dim oCur as object, nZe as long, nr as ling
  
  oLst = thisComponent.sheets.getSheetByName("Rechnungsdatenbank")
  oRech = thisComponent.getCurrentController().getActiveSheet()
  
  oCur = oLst.createCursorByRange(oLst.getCellRangeByName("A1"))
  oCur. gotoEnd()
  nZe = oCur.getRangeAddress.endRow
  nr = oLst.getCellRangeByName("A" & nZe).Value
  oRech.getCellRangeByName("F11").value = nr + 1
end sub
Gruss
Thomas

Verfasst: Sa, 01.07.2006 10:33
von icecube1307
so, danke erst ein mal für die überstzung..ich möchte das makro gerne über einen commandbutton starten, oder alternativ, was eigentlich noch besser wäre, wenn ich das dokument aufrufe..
insgesamt möchte ich eine rechnungsvorlage erstellen, in der das erste tabellenblatt die rechnung ist, das zweite ist eine datenbank in der rechnungsnummer, datum der rechnung, betrag und anschrift des kunden gespeichert werden sollen. wenn also die letzte vergebene rechnung in dem zweiten tabellenblatt die nummer 405 hatte, soll automatisch im feld rechnungsnummer die 406 eingetragen werden.
zudem brauche ich noch ein makro, das ich über einen commandbutton starte, das dafür sorgt, dass die rechnung zwei mal ausgedruckt wird und die daten adresse, rechnungsnummer usw. in die datenbank überschrieben werden..
ist alles ein bisschen kompliziert, ich weiß..gibt es denn im internet irgendwo eine gute anleitung für dieses basic?

Verfasst: Sa, 01.07.2006 12:43
von Toxitom
Hey Icecube,
gibt es denn im internet irgendwo eine gute anleitung für dieses basic?
Schau dir einfach mal den ersten Thread im Forum "Basic" an, da werden alle Quellen gelistet! (viewtopic.php?t=1553)

Aber wenn du dich wirklich damit vertiefen willst, wrst du um ein "gutess" Buch wohl kaum herumkommen.

Gruss
Thomas

Verfasst: So, 02.07.2006 12:50
von icecube1307
dankeschön für die quellenangaben! das makro ist auch super. es läuft so, wie ich es brauchte! ich hab auch versucht mich einzulesen, aber es wäre zu zeitaufwendig für mich, mich in das programm einzuarbeiten, weil ich nur diese eine rechnungsvorlage erstellen will. deshalb wäre es nett, wenn mit bei diesem einen makro noch geholfen werden könnte:
ich möchte aus dem tabellenblatt mit der rechnungsvorlage bestimmte daten in das zweite tabellenblatt mit einer rechnungsausgangsdatenbank überschreibe. Dazu muss in der Rechnungsausgangsdatenbank also die nächste freie Zeile ermittelt werden und die daten sollen dann darein übertragen werden. ich habe die spalten Rechnungsnummer, Datum, Betrag, Name, Adresse und Ort übertragen.
Das Excel-Makro dafür sieht so aus:

Sub Rechnung_eintragen()

Dim Lst As Object, Frm As Object
Dim z As Long
Set Lst=Sheets("Rechnungsdatenbank")
Set Frm=ActiveSheet

z=Lst.Range("A1").CurrentRegion.Rows.Count
z=z+1

Lst.Cells(z, 1).Value=Frm.Range("H10").Value
Lst.Cells(z, 2).Value=Frm.Range("H12").Value
Lst.Cells(z, 3).Value=Frm.Range("H44").Value
Lst.Cells(z, 4).Value=Frm.Range("A3").Value
Lst.Cells(z, 5).Value=Frm.Range("A4").Value
Lst.Cells(z, 6).Value=Frm.Range("A6").Value

End Sub


Dazu wäre es schön wenn das Makro das Dokument nach dieser Ausführung speichern könnte. Also, es wäre nett, wenn mir einer das makro übersetzen könnte! ich verstehe es aber auch wenn keiner lust dazu hat! ;)