Ich sehe absolut keinen grund darin das Du in deinem Makro mit Tabellenindex arbeitest. Also warum gehst Du nicht endlich mal daher und gibst in deinem Makro den Tabellen einen gescheiten Namen? Dann kann es dir auch vollkommen wurscht sein an der wievielten Stelle sich ein Tabellenblatt befindet. Und nein, ich sage jetzt nicht wo Du dazu was nachlesen kannst.habe lediglich den Tabellenindex in den Makros geändert, weil ja nun eine Tabelle mehr in der Mappe ist.
Und noch was
Code: Alles auswählen
sub neuerKunde
rem ---------------------------------------------------------------------
odoc = ThisComponent
osheet = odoc.sheets(1)
orange = osheet.getCellRangeByName("A28:J28")
orangeAddress = orange.getrangeaddress
odata()= orange.getdataarray
oZielSheet = oDoc.sheets(0)
c = oZielSheet.getCellRangeByName("A1:A5000").queryEmptyCells
oZielCell = c(0).getcellbyposition(0,0)
oZielCellAddress = oZielCell.getcelladdress
X1=oZielCellAddress.column
Y1=oZielCellAddress.row
X2=oZielCellAddress.column+(orangeAddress.EndColumn-orangeAddress.StartColumn)
Y2=oZielCellAddress.Row+(orangeAddress.EndRow-orangeAddress.StartRow)
oZielrange=oZielSheet.getCellRangeByPosition(X1,Y1,X2,Y2)
oZielrange.setdataarray(odata())
oCalc = thisComponent
oSheet = oCalc.sheets(1)
oCellRange = osheet.getCellRangeByName("E9:E17")
ocellRange.clearContents(com.sun.star.sheet.CellFlags.VALUE)
rem ----------------------------------------------------------------------
oCalc = thisComponent
oSheet = oCalc.sheets(1)
oCellRange = osheet.getCellRangeByName("E9:E17")
ocellRange.clearContents(com.sun.star.sheet.CellFlags.STRING)
rem-------------------------------------------------------------------------
oCalc = thisComponent
oSheet = oCalc.sheets(1)
oCellRange = osheet.getCellRangeByName("E9:E17")
ocellRange.clearContents(com.sun.star.sheet.CellFlags.DATETIME)
end sub
Und gleich mal einen praktischen Anwender-Tipp dazu.
Code: Alles auswählen
oSheet = thisComponent
oHauptBlatt = oSheet.sheets(0)
oNebenBalatt = oSheet.sheets(1)
Auch wenn es sich hart anhört, so muss ich das folgende doch mal sagen.
Wer sich bei der Makroprogrammierung nicht mit den Basisabläufen befasst, der kommt immer wieder ins Stolpern und macht sich das Leben nur unnötig schwer. Es bringt absolut gar nichts, wenn man sich hier und da etwas abkopiert und irgendwie sich das so zu recht biegt damit es im eigenen Makro funktioniert ohne die Basisabläufe zu verstehen. Und unter Basisabläufe verstehe ich Beispielsweise folgendes:
- Lesen und schreiben einer Zelle
- Tabellenblätter einen Namen zuordnen
- Zellen einen Namen zuordnen
- Variablen deklaration und defenition (Stichwort Dim)
Der letzt genannte ist besonders wichtig, da sehr viel davon abhängen wird. Und darüber wird man immer wieder Stolpern, Garantiert.
Dann stelle doch die Formeln wieder her. Das kennst Du doch schon, weil Du das ja schon gemacht hast. Oder überseh ich hier etwas?Aber auch in deiner neuen Version ist es so, dass nach Anlegen eines Neukunden die SVerweisformeln zum Aufruf bestehender Kundendaten überschrieben werden.
Gruß
balu