🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
CALC ist die Tabellenkalkulation, die Sie immer wollten.
-
Sugomojawe74
- Beiträge: 14
- Registriert: Do 26. Sep 2024, 17:44
Beitrag
von Sugomojawe74 » Di 1. Okt 2024, 17:10
mikele hat geschrieben: ↑Di 1. Okt 2024, 16:34
das kommt von der Schnelle ...
Danke das ist perfekt.
hast du vielleicht etwas wo ich genauere Infos zur ComboBox finde, so wie du sie gebaut hast? Ich würde das gerne besser verstehen und versuchen nachzubauen.
Gruß Michael
-
Sugomojawe74
- Beiträge: 14
- Registriert: Do 26. Sep 2024, 17:44
Beitrag
von Sugomojawe74 » Fr 18. Okt 2024, 19:58
@mikele
Ich habe jetzt einen Fehler gefunden. Wenn ich eine neue Menge eintragen möchte dann addiert er mit dem Bestand (E) das rechts neben dem Datum steht. Es müsste aber den Tagesaktuellen Bestand (I) zum addieren nehmen und neben das Datum (D) eintragen. Hoffe man versteht was ich meine.
Gruß Michael
-
mikele
- * LO-Experte *
- Beiträge: 1929
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » So 20. Okt 2024, 21:19
Hallo,
dann muss die Zeile
Code: Alles auswählen
oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(4,zeile).value+menge
entsprechend angepasst werden. Da die Zählung mit 0 losgeht, kennzeichnet 4 die Spalte E. Die Spalte I ist dann die 8, also
Code: Alles auswählen
oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
Gruß,
mikele
-
Sugomojawe74
- Beiträge: 14
- Registriert: Do 26. Sep 2024, 17:44
Beitrag
von Sugomojawe74 » So 20. Okt 2024, 21:28
mikele hat geschrieben: ↑So 20. Okt 2024, 21:19
Code: Alles auswählen
oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
Hallo Mikele,
so hatte ich das schon versucht. Ich bräuchte das so, es wird die Zahl aus Spalte I zu der neuen Anzahl des Medikaments addiert und das Ergebnis soll in Spalte E eingetragen werden.
Gruß Michael
-
mikele
- * LO-Experte *
- Beiträge: 1929
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » So 20. Okt 2024, 22:14
Hallo,
Genau das sollte die Formel machen. Der Wert aus Spalte I wird mit der neuen Menge addiert und die Summe in Spalte E eingetragen.
Was passiert bei dir?
Gruß,
mikele
-
Sugomojawe74
- Beiträge: 14
- Registriert: Do 26. Sep 2024, 17:44
Beitrag
von Sugomojawe74 » Mo 21. Okt 2024, 12:51
mikele hat geschrieben: ↑So 20. Okt 2024, 22:14
Was passiert bei dir?
Hallo Mikele,
bei mir wird der Wert aus Spalte E zu der neuen Menge addiert und in Spalte E eingetragen.
Gruß Michael
-
mikele
- * LO-Experte *
- Beiträge: 1929
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » Mo 21. Okt 2024, 17:07
Hallo,
Mit der geänderten Codezeile ist das nicht möglich
Addiert den Wert in Spalte I mit der Variablen menge.
Gruß,
mikele
-
Sugomojawe74
- Beiträge: 14
- Registriert: Do 26. Sep 2024, 17:44
Beitrag
von Sugomojawe74 » Mo 21. Okt 2024, 17:18
Einmal vor dem eintragen

- Screenshot 2024-10-21 171337.png (49.06 KiB) 2425 mal betrachtet
und dann nach dem eintragen

- Screenshot 2024-10-21 171353.png (49.94 KiB) 2425 mal betrachtet
Und der Code dazu
Code: Alles auswählen
Dim oDialog as object
Sub Main
'Zugriff auf Dokument
oDoc=ThisComponent
'aktuelle Tabelle
oTab=oDoc.Sheets.getByName("Listen")
'Bestimme letzte beutzte Zelle
oCur=oTab.createCursor
oCur.gotoEndOfUsedArea(False)
n=oCur.rangeaddress.startrow+1
'Zugriff auf Dialog
DialogLibraries.loadLibrary( "Standard")
oLib = DialogLibraries.getByName("Standard")
oDialog = CreateUnoDialog(oLib.getByName("Dialog1"))
'Setze aktuelles Datum - Wert und Textanzeige
octrdate=odialog.getcontrol("DateField1")
octrdate.date=cdatetounodate(now())
octrdate.text=format(now(),"dd.mm.yy")
'Fülle des Listenfeldes
octrl=odialog.getcontrol("ListBox1")
'alle Einträge löschen
octrl.removeItems(0, octrl.getItemCount)
'Daten erfassen
zeile=2
med=oTab.getCellByPosition(1,zeile).string
do while med<>""
octrl.addItem(med,zeile-1)
zeile=zeile+1
med=oTab.getCellByPosition(1,zeile).string
loop
octrl=odialog.getcontrol("ComboBox1")
'alle Einträge löschen
octrl.removeItems(0, octrl.getItemCount)
zeile=2
menge=oTab.getCellByPosition(4,zeile).string
do while menge<>""
octrl.addItem(menge,zeile-1)
zeile=zeile+1
menge=oTab.getCellByPosition(4,zeile).string
loop
'Starte Dialog
x=oDialog.execute
End Sub
sub uebernehmen
datum=CDateFromUnoDate(odialog.getcontrol("DateField1").Date)
med=odialog.getcontrol("ListBox1").SelectedItem
menge=val(odialog.getcontrol("ComboBox1").text)
oTab=ThisComponent.Sheets.getByName("Übersicht Bestand")
zeile=2
tab_med=oTab.getCellByPosition(1,zeile).string
gefunden=false
do while tab_med<>"" and not gefunden
if med=tab_med then
gefunden=true
oTab.getCellByPosition(3,zeile).value=datum
oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
end if
zeile=zeile+1
tab_med=oTab.getCellByPosition(1,zeile).string
loop
end sub
Gruß Michael
-
mikele
- * LO-Experte *
- Beiträge: 1929
- Registriert: Mo 1. Aug 2011, 20:51
Beitrag
von mikele » Mo 21. Okt 2024, 19:57
Hallo,
da die Spalte I eine Formel enthält, die den aktuellen Bestand aus dem Datum berechnet, geht es so schief.
Vertausche die Codezeile mit der vorhergehenden. Dadurch wird erst der neue Bestand korrekt bestimmt und dann erst das Datum gesetzt.
Code: Alles auswählen
oTab.getCellByPosition(4,zeile).value=oTab.getCellByPosition(8,zeile).value+menge
oTab.getCellByPosition(3,zeile).value=datum
Gruß,
mikele
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.