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