Calc: Neue Zeile direkt unter Spaltenüberschrift-Zeile einfuegen

Hallo Andreas,

wenn das Makro

Sub InsertRow
Dim oD as Object ' [object] Dokument
Dim oT as Object ' [object] Tabellenblatt
Dim oZ as Object ' [object] Zeile
Dim A as Long ' Anzahl
Dim Y as Long ' Y-Index (1.Zeile: Y=0)
oD = ThisComponent
oT = oD.Sheets(0)
oZ = oT.getRows
Y = 1
A = 1
oZ.insertByIndex(Y,A)
End Sub

die Zeile an der von Dir gewünschten Stelle einfügt, dann muss man nur noch die Zellen dieser Zeile entsprechend formatieren. Das kann man auch mit dem Makro gleich mit machen. Anbei eine beispielsweise Erweiterung obigen Makros mit Formatierung für die ersten 3 Zellen der eingefügten Zeile mit "Text", "Datum TT.MM.JJJJ" und "Ganzzahl mit einer führenden Null":

Sub InsertRow
Dim oD as Object ' [object] Dokument
Dim oT as Object ' [object] Tabellenblatt
Dim oZ as Object ' [object] Zeile
Dim A as Long ' Anzahl
Dim Y as Long ' Y-Index (1.Zeile: Y=0)
oD = ThisComponent
oT = oD.Sheets(0)
oZ = oT.getRows
Y = 1
A = 1
oZ.insertByIndex(Y,A) ' Zeile einfügen
oT.getCellByPosition(0,Y).NumberFormat = 100 ' Format Zelle "A2": "Text"
oT.getCellByPosition(1,Y).NumberFormat = 36 ' Format Zelle "B2": "Datum TT.MM.JJJJ"
oT.getCellByPosition(2,Y).NumberFormat = 1 ' Format Zelle "C2": "Ganzzahl mit einer führenden Null"
End Sub

Zur Überprüfung der durchgeführten Zell-Formatierungen: Entsprechende Zelle markieren und [Format]>[Zellen]. Dann bekommt man das aktuelle Format der Zelle von "CALC" angezeigt.

Weitere/andere "NumberFormat"-Angaben kann man mit diesem Makro selbst herausfinden:

Sub CellNumberFormat
Dim oD as Object ' [object] Dokument
Dim oT as Object ' [object] Tabellenblatt
Dim ZFN as Integer ' Zell Format Nummer
oD = ThisComponent
oT = oD.Sheets(0)
ZFN = oS.getCellByPosition(0,0).NumberFormat ' aktuelles Zell-Format auslesen
MsgBox("ZellFormatNummer: " & ZFN) ' aktuelles Zell-Format anzeigen
End Sub

Dazu die Zelle "A1" wie gewünscht manuell formatieren und anschließend das Makro starten. Die entsprechende "ZellFormatNummer" für die "NumberFormat"-Anweisung wird dann via "MsgBox" angezeigt.

Gefunden bei: www.dannenhoefer.de => "7.1.26 Wie kann man das Zellenformat einstellen ?"

Gruß
Hans-Werner :-))

OoOHWHOoO schrieb:

wenn das Makro

Sub InsertRow
Dim oD as Object ' [object] Dokument
Dim oT as Object ' [object] Tabellenblatt
Dim oZ as Object ' [object] Zeile
Dim A as Long ' Anzahl
Dim Y as Long ' Y-Index (1.Zeile: Y=0)
oD = ThisComponent
oT = oD.Sheets(0)
oZ = oT.getRows
Y = 1
A = 1
oZ.insertByIndex(Y,A)
End Sub

die Zeile an der von Dir gewünschten Stelle einfügt, dann muss man nur
noch die Zellen dieser Zeile entsprechend formatieren. Das kann man auch
mit dem Makro gleich mit machen.

Mit "Format" meinte ich nicht nur visuelle Merkmale, sondern auch
solche wie "Daten > Gültigkeit".

Es ist mir zu fehleranfällig und aufwändig sämtliche Merkmale der
Zeilen mit Einträgen auch über das Makro erneut zuweisen zu müssen.

Vielleicht gibt es einen anderen Ansatz, wo man die neue Zeile in
"unter Zeile 2 erzeugt" und sie danach "nach oben verschiebt".

Wenn ich mich richtig erinnere, gibt es ja Plugins ("CellMover" oder
so) für die in LO fehlenden Verschiebefehle.

Gruß, Andreas