Seite 1 von 2
Re: Bestände ausbuchen
Verfasst: Fr, 24.10.2008 22:44
von turtle47
Hi Moni,
Wenn ein einen Artikel verkaufe, gebe ich per Hand im Artikelblatt in der Spalte Verkauf die Menge ein (d.h. ich erhöhe die Menge, die schon drin steht) damit ich weiß, wieviel ich am Jahresende davon verkauft habe. Kann man sowas auch mit einem Makro machen? Ich weiß gar nicht, wie ich mit sowas anfangen soll, bin ein blutiger Anfänger in der Richtung!
Sollte normalerweise kein Problem sein. Habe vor kurzem so was ähnliches schon mal geschrieben, z.B. nach bestimmten Kriterien aus einem Vorgabeblatt in einem zweiten Blatt zu suchen und zu buchen.
Code: Alles auswählen
Sub Search_Engine
oDoc = ThisComponent
oSheetOut = oDoc.Sheets.getByName("output")
oCell = oSheetOut.getCellRangeByName("J5")
Customer_ID_1 = oCell.string
for i = 15 to 25
oCell = oSheetOut.getCellRangeByName("K" & i)
Order_ID_1 = oCell.string
Searching_for_1 = Customer_ID_1 & Order_ID_1
if Order_ID_1 = "" Then
msgbox "Searching ""output_sheet"" finish or no more ID´s found!", 64 , "Searching"
exit sub
end if
oCell = oSheetOut.getCellRangeByName("L" & i)
Order_Code = oCell.value
oCell = oSheetOut.getCellRangeByName("M" & i)
Order_Qty = oCell.value
oSheetData = oDoc.Sheets.getByName("database")
for j = 3 to 20' 20 is example for count rows
oCell = oSheetData.getCellRangeByName("B" & j)
Customer_ID_2 = oCell.value
oCell = oSheetData.getCellRangeByName("C" & j)
Order_ID_2 = oCell.value
if Searching_for_1 = Customer_ID_2 & Order_ID_2 Then
for k = 10 to 48 step 2
oCell1 = oSheetData.getCellByPosition(k , j - 1)
Data_ID_2 = oCell1.value
if Order_Code = Data_ID_2 then
oCell_1 = oSheetData.getCellByPosition( k + 1 , j -1 )
Quantity1 = oCell_1.value
new_Quantity = Quantity1 - Order_Qty
oCell_1.value = new_Quantity
end if
next k
end if
next j
next i
End Sub
Und gibt es auch die Möglichkeit, ein Makro zu schreiben, damit er mir die Rechnungen, die als Pdf speichere, in eine List einträgt, mit Datum, Rechnungsnummer, Namen und Betrag?
Sollte auch keine grosse Sache sein.
Am besten mal eine Beispieldatei hochladen, dazu vorher hier im Forum anmelden (es lohnt sich, weil es ist echt ne tolle Truppe hier), um die Struktur Deines Dokumentes zu kennen.
Bis dann.
Jürgen
Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 09:17
von piratenbraut
Hallo Jürgen,
ich hab dir mal eben das Warenlager geschickt. Es ist nur ein Probewarenlager, das Orginale rühr ich für so was net an. Ich muss heut eh noch Rechnungen schreiben. Im Abverkaufsblatt stehen rund 900 Artikel und nicht nur 5, wie hier. Und im Blatt Rechnungen sollen die Rechnung nach Datum, Nr, Name und Betrag per Makro eingefügt werden. Vielleicht können wir auch ein paar Makros verbinden oder nur eins draus machen. Immer drank denken: bin blutiger Anfänger und stolz auf mich, überhaupt soweit gekommen zu sein.
Und noch was: ich will wissen wie man so was schreibt, wie man auf die Ideen kommt, will ja schließlich auch was lernen.
Danke erstmal für deine schnelle Antwort, bleibe heute einfach online und schau immer wieder nach nach Antwort
Liebe Grüße
Moni
Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 12:52
von hawe
Hallo,
ich hab übungs- und testweise einige ältere Excel-Makros nach OO Calc portiert. Das ist auch ein Rechnungs/Fakturierungs-Beispiel darunter. Die Makros sind allerdings hauptsächlich VBA mit den notwendigen BASIC anpassungen. Wenn's DIch interessiert dann sag Bescheid :
Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 13:45
von turtle47
Hallo Moni,
piratenbraut hat geschrieben:Es ist nur ein Probewarenlager, das Orginale rühr ich für so was net an
Das ist auch sinnvoll bei so einer Sache.
piratenbraut hat geschrieben:Und noch was: ich will wissen wie man so was schreibt, wie man auf die Ideen kommt, will ja schließlich auch was lernen.
Deshalb machen wir das Step by Step.
In der angehängte Datei findes Du ein neues Modul mit dem Namen "Ausbuchen".
Darin ist das Makro "Ware_ausbuchen" enhalten. Dieses läuft wie folgt ab:
Zuerst wird geprüft ob zu einer Artikelnummer auch eine Mengenangabe vorhanden ist.
Wenn nicht , dann wird Dir das über eine Messagebox mitgeteilt und das Makro beendet.
Wenn Mengenangabe und Artikelnummer in Ordnung sind dann werden diese in einer
Schleife ausgelesen und die Artikelnummern in dem Sheet "Abverkauf" verglichen und
bei Übereinstimmung die Anzahl in der Spalte "Verkauf" hinzuaddiert.
Der Code ist entsprechend mit Kommentaren versehen damit Du nachvollziehen kannst
was da passiert.
Man müsste noch eine Sicherheit einbauen, damit die Buchung nicht versehentlich mehrfach
durchgeführt werden kann. Dazu habe ich auch schon ein paar Ideen.
In der Spalte "Artikelnr." habe ich Dir über Menue > Daten > Gültigkeit ein Dropdownmenue
hizugefügt um die entsprechenden Artikel einfacher auszuwählen. Ich hoffe das war in
Deinem Sinne.
Aber wie gesagt, alles der Reihe nach.
Erste Fragen dazu?
Jürgen
Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 15:54
von piratenbraut
Mann bist du schnell, lach.
Okay, Makro hab ich mir angeschaut, das Lager ist nur zum lesen geöffnet, ausprobieren kann ich es leider nicht. Aber ich denke, das makro hab ich verstanden. Wenn ich mehr Artikel habel, ändere ich die Schleife 2 bis 5 auf 2 bis ... Artikel. Das Drop and Down menü ist okay, meine ganzen Artikel sind zwar mit Artikelnummern versehen, aber es erspart Arbeit.
Also soweit keine Fragen zum makro. Er darf aber auch ins minus abverkaufen, denn manchmal bestell ich Ware und schreib die Rechnung schon, dann buche ich erst im Nachhinein. Geht das auch?
Ne Sicherheit wäre okay, damit nichts doppelt abverkauft wird. Wie willst das machen?
Okay, bis soweit alles okay und verstanden
Lieben Gruß Moni

Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 16:21
von turtle47
Hallo Moni,
piratenbraut hat geschrieben:das Lager ist nur zum lesen geöffnet, ausprobieren kann ich es leider nicht
Du musst das Dokument erst auf Deinem Rechner abspeichern, dann kannst Du es auch ausprobieren.
piratenbraut hat geschrieben:Er darf aber auch ins minus abverkaufen, denn manchmal bestell ich Ware und schreib die Rechnung schon, dann buche ich erst im Nachhinein. Geht das auch?
Das Makro bucht auch ins Minus.
Hier vorab schon mal der Code für die Rechnungen in die Rechnungsliste zu übertragen:
Code: Alles auswählen
Sub Liste_Rechnung
oDoc = ThisComponent
ReSheet = oDoc.Sheets.getByName("Rechnung")'Sheet Rechnung ansprechen
Cell_ReDatum = ReSheet.getCellRangeByName("F9").value 'Zelle auslesen
Cell_ReNr = ReSheet.getCellRangeByName("F11").value
Cell_ReName = ReSheet.getCellRangeByName("B13").String
Cell_ReBetrag = ReSheet.getCellRangeByName("F36").value
ReSheetSt = oDoc.Sheets().getByName("Rechnungen")'Sheet Rechnungen ansprechen
oCellCursor =ReSheetSt.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
End_Row = oCellCursor.getRangeAddress.EndRow 'letzte benutzte Zeile auslesen
EndRow = End_Row + 2 'Der Index der Zeilen fängt bei Null an zu zählen
ReSheetSt.getCellRangeByName("A" & EndRow ).Value = Cell_ReDatum 'in Zelle schreiben
ReSheetSt.getCellRangeByName("B" & EndRow ).Value = Cell_ReNr
ReSheetSt.getCellRangeByName("C" & EndRow ).String = Cell_ReName
ReSheetSt.getCellRangeByName("D" & EndRow ).value = Cell_ReBetrag
End Sub
piratenbraut hat geschrieben:Ne Sicherheit wäre okay, damit nichts doppelt abverkauft wird. Wie willst das machen?
Na, die Schaltfläche so lange deaktivieren bis der Sheetinhalt für eine neue Rechnung gelöscht wird.
Kleiner Tipp am Rande. An Deiner Stelle würde ich in der Spalte "Betrag" folgende Formel verwenden:
(Beispiel für Zelle F20. Dort eintragen und dann runterziehen)
Dann werden dort die unschönen Nullen nicht angezeigt.
Viel Spass bei Ausprobieren.
Jürgen
Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 17:05
von piratenbraut
Ha du bist ein Held, echt!
habs gespeichert und es funktioniert supi! Deinen Tipp mit den Nullen bau ich noch ein und das andere Makro auch. Eine Frage hab ich noch: Das Drop and Drown - wie kann ich das für alle Artikel übernehmen? Im Beispiel sind es ja nur die 5, aber in echt sind es ja mehr. Wir haben uns da schon mal die Zähne dran ausgebissen und ein bisschen faul beim Rechnung schreiben darf man ja sein!
Erst mal lieben Dank und ich bin weiter am basteln!
Liebe Grüße
Moni
Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 17:45
von turtle47
Hallo Moni,
piratenbraut hat geschrieben:Eine Frage hab ich noch: Das Drop and Drown - wie kann ich das für alle Artikel übernehmen?
Das hatte bereits oben vorsorglich schon mal geschrieben:
turtle47 hat geschrieben:In der Spalte "Artikelnr." habe ich Dir über Menue > Daten > Gültigkeit ein Dropdownmenue
hizugefügt um die entsprechenden Artikel einfacher auszuwählen
Dort kannst Du den Zellbereich angeben.
Hier die komplette Datei mit folgenden Funktionen:
Button "Ware ausbuchen" > Ware wird ausgebucht und der Button deaktiviert
Button "Übertragen in Übersicht" Die Rechnung wird in die Übersicht eingetragen und der Button deaktiviert
Button "Inhalt leeren" > Der Inhalt in der Tabelle wird gelöscht und die beiden Schaltflächen werden wieder aktiviert
Die Sub "leeren" zum Löschen des Inhaltes habe ich "etwas" gekürzt.
Viel Erfolg.
Jürgen
Re: Bestände ausbuchen
Verfasst: Sa, 25.10.2008 18:05
von piratenbraut
okay du Held, lach, ich war mittlerweile auch fleissig und hab die Makros für die Rechnung für Ebay angeglichen, die gehn jetzt dort auch. Außerdem hab ich bei den Makros zum Thema Rechnung eintragen eine Zeile geändert, da er mir dort beim Namen nur Frau oder Mann eingetragen hat

musste dort nur die Zeile ändern.
Ich danke dir vielmals, schließe dich heut Nacht in mein Nachtgebet ein, hast es echt verdient. Seit Monaten überlegen wir, wie wir das ändern könnten und kommen nicht voran. Wenn du mir deine Adresse schickst (auch an Email falls du willst -
etherischeoele@web.de - ) dann lasse ich dir etwas für den Aufwand und als Entschädigung per Post schicken. Ist es mir wert!
Ich hab ja schon viel gelernt was Open Office angeht mir mir vieles angeeignet, selbst eine kleine Kasse hab ich geschrieben, aber bei Makros setzt es bei mir aus. Allerdings scheint das kein Hexenwerk zu sein. Man muss nur dransitzen und sich in die Materie reinarbeiten, dann geht fast alles.
Jetzt übernehm ich die letzten Änderungen von dir was das leeren angeht, und danke dir nochmals kräftig.
Liebe Grüße und Bussi auf Bauchi
Moni
Re: Bestände ausbuchen
Verfasst: So, 26.10.2008 02:54
von turtle47
Hi Moni,
piratenbraut hat geschrieben:ein bisschen faul beim Rechnung schreiben darf man ja sein
Da Faulheit bekanntlich scharf denk habe ich mir noch was für die Kundenauswahl überlegt.
In der Kundenliste habe ich eine Hilfsspalte erstellt die alle Daten eines Kunden in einer Zelle zusammenfasst.
Diese Hilfsspalte wird für die Kundenauswahl in dem Sheet Rechnungen eingesetzt. Dort kann man dann den
Kunden aus der Liste auswählen und die Kundennummer wird dann direkt in der entsprechenden Zelle eingefügt.
Die Kundenauswahl wird nicht mit ausgedruckt.
Das habe ich über Menue > Format > Zellen > Reiter Zellschutz > [X] Für Ausdruck ausblenden ausgeschaltet.
Edit: > Start hinfällig
In der Kundenliste habe ich die Spalte Kundennummer als Text formatiert und zwei Nullen vorne angestellt.
Das macht deshalb Sinn, wenn Du mal mehr als 999 Kunden hast die Formel:
nicht richtig funktioniert. Die holt sich nämlich die ersten 5 Stellen des Textes des ausgewählten Kunden.
> Ende hinfällig
Die Formel in Zelle F10
holt sich die ersten Stellen bis zum Komma automatisch.
Den Makrocode habe ich auch noch ein wenig optimiert. Die Stellen sind entsprechend gekennzeichnet.
Hilft Dir das wieder ein Stück weiter?
Jürgen
Re: Bestände ausbuchen
Verfasst: So, 26.10.2008 17:58
von piratenbraut
Hallo Jürgen, kann es sein das dir irgendwie langweilig ist und du mit dem Blatt noch nicht zufrieden warst? Für mich war es ja schon der Himmel auf Erden, aba sowas ist das Paradies schlecht hin. Ich bin beeindruckt, echt.

Das werd ich auch noch übernehmen in mein Warenlager. Aber das nehm ich mir morgen oder Dienstag vor, wir machen gerade nen faulen auf der Couch. Aber danke dir schon mal im Voraus und das Angebot mit dem schicken steht noch aus - ich warte geduldig auf Adresse, lach.
So, Rauchpause vorbei und jetzt schauen wir DVD weiter.
Dir noch nen schönen Restsonntag und liebe Grüße und vielen Dank für deine Hilfe, mein Held
Gruß Moni
Re: Bestände ausbuchen
Verfasst: So, 26.10.2008 20:49
von turtle47
Grüss Gott Moni,
so sagt man doch bei Euch, oder?
piratenbraut hat geschrieben:kann es sein das dir irgendwie langweilig ist
Nö, eigentlich nicht.
piratenbraut hat geschrieben:und du mit dem Blatt noch nicht zufrieden warst?
Genau so ist es, weil ich immer so arbeite wie ich es für mich selber auch tun würde.
Konnte halt nicht einschlafen und da tue ich doch was sinnvolleres als die Decke anzustarren.
Danach bin ich dann zufrieden schlummern gegangen.
Ich wünsche die jedenfalls eine gute Auftragslage.
Jürgen
Re: Bestände ausbuchen
Verfasst: Mo, 27.10.2008 08:24
von piratenbraut
Hallo, habe alles erfolgreich im Script geändert, auch deine neuste Änderung mit den Kundendaten funktioniert prächtig. Jetzt hab ich noch eine letzte Frage: da ich immer alles ganz ordentlich in mein richtiges Warenlager übertragen habe, habe ich festgestellt, das ich andere Buttons als du benutze für das PDF, drucken, Ware ausbuchen. Wenn ich jetzt z.B. auf das Button Ware ausbuchen gehe, macht er das ohne Probleme, aber er zeigt es mir nicht. Deine wurden dann grau, das fand ich keine schlechte Idee. Wie kann ich solche Buttons machen? Ich hab es schon ausprobiert, aber ich bekomm das so nicht hin.
Kannst du mir noch einen Tipp geben?
Und nochmals vielen Dank für deine Hilfe, bist echt ein Engel
Servus und liebe Grüße
Moni
Re: Bestände ausbuchen
Verfasst: Mo, 27.10.2008 16:34
von turtle47
Liebe Moni,
piratenbraut hat geschrieben:Deine wurden dann grau, das fand ich keine schlechte Idee. Wie kann ich solche Buttons machen? Ich hab es schon ausprobiert, aber ich bekomm das so nicht hin.
Auf die Frage hatte ich schon lange gewartet und noch bei mir gedacht, die ist aber ganz schön fit was Calc und Makros angeht.
Lange Rede kurzer Sinn.
Klicke Menue > Ansicht > Symbolleisten > Formular-Steuerlemente an.
Dann klicke auf das Symbol mit dem Dreieck-Lineal-Bleistift >> Der Entwurfsmodus wird eingeschaltet.
(Wenn Du mit der Maus langsam über die Symbole fährst wird dir angezeigt worum es sich handelt.)
Weiterer Klick auf das Symbol "Schaltfläche" und im Sheet aufziehen, danach auf die Schaltfläche einen Rechtsklick und im Kontextmenue "Kontrollfeld" auswählen.
Wenn du dort unter dem Reiter "Allgemein" deine Einstellungen vorgenommen hast wie Name, der muss genau so lauten wie in dem Makro weil er sonst nicht zum deaktivieren angesprochen werden kann, sowie Farbe, Titel, Schrift etc. dann den Reiter "Ereignisse" anklicken und das Makro bei "Beim Auslösen" zuweisen".
Danach nicht vergessen den Entwurfsmodus wieder auszuschalten!!
Ich hoffe, dass ich jetzt nichts vergessen habe zu beschreiben.
Jetzt sollte alles so wie von mir in dem Beispielsheet funktionieren.
Sonst einfach nochmal nachfragen. Du weist ja wo ich zu erreichen bin.
Viiiiel Erfolg.
Jürgen
Re: Bestände ausbuchen
Verfasst: Di, 28.10.2008 09:55
von piratenbraut
Hallo Jürgen, ich war gar nicht so falsch mit meinem Versuch, allerdings hatte ich den Knopf für das Steuerelement nicht aktiviert. Nun läuft alles, aba ich hab ein Problem mit dem Makro leeren.
ich hab ja 2 Rechnungen, eine normale, die du gemacht hast und eine für Ebay, die ich angepasst habe. Da läuft auch alles, aber das Marko Liste leeren ging nur bei der normalen Rechnung.
Code: Alles auswählen
sub leeren
Dim vButton, vForm
Dim oForms
oForms = ThisComponent.CurrentController.ActiveSheet.DrawPage.Forms
vForm = oForms.getByIndex(0)
vButton1 = vForm.getByName("Button_Ausbuchen")
vButton1.Label = "Ware ausbuchen"
vButton1.enabled=True
vButton2 = vForm.getByName("Button_ReListe")
vButton2.Label = "Übertragen in Übersicht"
vButton2.enabled=True
odoc=thiscomponent
osheet=odoc.sheets(1)
myAera=oSheet.getCellRangeByName("A20:B36")
myAera.clearContents(1)
End Sub
jetzt habe ich die Zeile osheet=odoc.sheets von (0) auf (1) geändert, da Ebay die zweite Rechnung und ich die häufiger brauche. Jetzt löscht er mir die Liste bei Ebay, aber nimmer auf der normalen Rechnung. Wie kann ich das ändern, das er auch die normal löscht?
Ich würde dir gerne nochmal das komplette Warenlager schicken, damit du noch mal drüber schauen kannst, ob ich nen Fehler gemacht habe, aber das will ich nicht ins Forum stellen, da alle Daten drin sind. Kann ich dir das an deine normale Email schicken? Musst du mir halt mal geben.
Liebe Grüße Moni