Seite 1 von 1
Numericfields in Zellbereich einfügen
Verfasst: Sa, 02.01.2016 18:55
von Jörg
Hallo Fachleute,
Zunächst allen ein gutes 2016.
Sicher könnt Ihr mir bei meinen folgenden Problem helfen.
Zur Pflege meiner Preislisten möchte ich mir einen Dialog erstellen.
Mit nachfolgendem Code möchte ich mit den Numericfeldern 1 :21 den Zellbereich B5:V5 füllen:
Also Numericfeld1 in B5,............................,Numericfeld21 in V5
Code: Alles auswählen
sub neue_preise_eintragen
odoc = thiscomponent
osheet = odoc.sheets.getByName ("Preisliste")
for ta = 1 to 21
osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta+1).value
next ta
oDialog6.endexecute
end sub
Das Problem:
B5 wird mit Numericfeld2 gefüllt , das Numericfeld1 wird nicht eingetragen.
die zweite Sache wäre folgende:
Mit den Numericfeldern 22 :42 wiederum soll der Bereich B16 : V16 gefüllt werden.
Also müßte ja irgendwie anders definiert (unterschieden) werden.
Gruß Jörg
Re: Numericfields in Zellbereich einfügen
Verfasst: Sa, 02.01.2016 18:59
von Jörg
hallo,
sorry hab jetzt einfach nochmal was probiert und zwar so:
osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
anstatt ta +1 nur &ta
o.k.
Für´s zweite Problem allerdings hab ich noch keine Lösung
Re: Numericfields in Zellbereich einfügen
Verfasst: Sa, 02.01.2016 19:11
von Stephan
Für´s zweite Problem allerdings hab ich noch keine Lösung
aber was ist da anders als beim ersten Beispiel, es bedarf doch nur der Anpassung der Zahlen:
Code: Alles auswählen
sub neue_preise_eintragen
odoc = thiscomponent
osheet = odoc.sheets.getByName ("Preisliste")
for ta = 1 to 21
osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
osheet.getcellByPosition( ta, 15 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
next ta
oDialog6.endexecute
end sub
Gruß
Stephan
Re: Numericfields in Zellbereich einfügen
Verfasst: Sa, 02.01.2016 19:35
von Jörg
Hallo Stephan, danke für die schnelle Antwort.
Leider wird die Zeile
Code: Alles auswählen
osheet.getcellByPosition( ta, 15 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
angemeckert:
Objektvariable nicht belegt.
Re: Numericfields in Zellbereich einfügen
Verfasst: Sa, 02.01.2016 19:44
von Jörg
Hallo Stephan, ich nochmal
Nachdem ich das Programm neu gestartet habe, funktioniert Dein Code einwandfrei.
Vielen Dank.
Gruß Jörg
Re: Numericfields in Zellbereich einfügen
Verfasst: Sa, 02.01.2016 19:44
von Stephan
Mutmaßlich existiert dann kein Feld namens "NumericField22" und Weitere auf dem Dialog.
Am Rande gesagt sollten die Felder nach Deiner Verbalaussage im ersten Teil ohnehin "Numericfeld..." heißen, sie heißen jedoch im Code "Numericfield..." was Du als funktionierend bestätigt hast. Vielleicht liegt da eine Verwechsdelung vor. Alles das hat aber Du vor Augen und ich kann es lediglich raten.
Gruß
Stephan
Re: Numericfields in Zellbereich einfügen
Verfasst: Sa, 02.01.2016 20:31
von Jörg
Hallo Stephan,
da haben sich unsere Beiträge sicherlich überschnitten.
Habe mal meinen endgültigen Code unten rein gestellt.
Ich arbeite mit "alter" und "neuer" Preisliste.
Sobald neue Preise vorliegen, werden die bisher neuen Preise in die alte Preisliste kopiert und anschließend die neuen Preise (aus dem Dialog) in die Neue Preisliste eingetragen, jenachdem welche Kasse ich mittels der Listbox in die Hilfszelle A1 einfüge.
Eine Frage hätte ich noch.
Für´s Kopieren verwende ich setDataArray.
Ginge das auch für die Numericfields?
Möglicherweise hätte das einen positiven Einfluß auf die Performance, da die Werte nicht einzeln eingefügt werden.
Vielen Dank für Deine Hilfe.
Gruß Jörg
Code: Alles auswählen
Sub Preisliste_aendern
Dim aData()
odoc = thiscomponent
osheet = odoc.sheets.getbyname ("Preisliste")
mycell = osheet.getCellRangeByName("A1")
mystring = mycell.string
'BKK
if mystring = "BKK" then
'kopiert preise aus neuer in alte preisliste
BKKneu = Array("B5:V5","B16:V16")
BKKalt = Array("B39:V39","B50:V50")
For i = 0 To 1
oBereich = osheet.getCellRangeByName(BKKneu(i))
aData = oBereich.getDataArray()
oZielbereich = osheet.getCellRangeByName(BKKalt(i))
oZielbereich.setDataArray(aData)
Next i
'fügt die neuen Preise aus dem Dialog ein
for ta = 1 to 21
osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
osheet.getcellByPosition( ta, 15 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
next ta
end if
'AOK
if mystring = "aok" then
aokneu = Array("B6:V6","B17:V17")
aokalt = Array("B40:V40","B51:V51")
For i = 0 To 1
oBereich = osheet.getCellRangeByName(aokneu(i))
aData = oBereich.getDataArray()
oZielbereich1 = osheet.getCellRangeByName(aokalt(i))
oZielbereich1.setDataArray(aData)
Next i
for ta = 1 to 21
osheet.getcellByPosition( ta, 5 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
osheet.getcellByPosition( ta, 16 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
next ta
end if
'usw.
oDialog6.endexecute
end sub
Re: Numericfields in Zellbereich einfügen
Verfasst: So, 03.01.2016 08:36
von Stephan
z.B.:
Code: Alles auswählen
sub neue_preise_eintragen
odoc = thiscomponent
osheet = odoc.sheets.getByName ("Preisliste")
Dim array_1(20)
Dim array_2(20)
for ta = 1 to 21
array_1(ta-1) = oDialog6.getControl("NumericField" & ta).value
array_2(ta-1) = oDialog6.getControl("NumericField" & ta+21).value
next ta
array_1a = Array(array_1())
array_2a = Array(array_2())
osheet.getCellRangeByPosition( 1, 4, 21, 4).setDataArray(array_1a())
osheet.getCellRangeByPosition( 1, 15, 21, 15).setDataArray(array_2a())
oDialog6.endexecute
end Sub
Gruß
Stephan
(Gelöst)Re: Numericfields in Zellbereich einfügen
Verfasst: So, 03.01.2016 12:27
von Jörg
Hallo Stephan,
ja genauso !!!!!!!!!!!!!!!
Vielen Dank und noch nen schönen Sonntag.
Gruß Jörg