Hallo,
folgendes Beispiel-Makro kann das machen (wobei ich das niemals so machen würde, sondern mit Hilfs-Spalten und/oder Formeln arbeiten würde).
Sub NummerierungVoranstellen()
Dim oDoc As Object
Dim oSheet As Object
Dim oRange As Object
Dim oCell As Object
Dim StartRow As Long
Dim StartColumn As Long
Dim EndRow As Long
Dim EndColumn As Long
Dim i As Long
Dim j As Long
Dim AktWert As String
Dim Voran As String
oDoc=ThisComponent
oSheet=oDoc.CurrentController.ActiveSheet
If oDoc.currentSelection.supportsService _
("com.sun.star.sheet.SheetCellRange") Then
oRange=oDoc.currentSelection
End If
StartCol=oRange.RangeAddress.StartColumn
EndCol=oRange.RangeAddress.EndColumn
StartRow=oRange.RangeAddress.StartRow
EndRow=oRange.RangeAddress.EndRow
If StartCol <> EndCol Then
MsgBox "Nur Zellen in einer einzigen Spalte dürfen ausgewählt sein"
Exit Sub
End If
j=0
for i = StartRow to EndRow
if j < 10 Then
Voran = "0" & j
else
Voran = j
end if
Voran = Voran & " "
oCell = oSheet.getCellByPosition(StartCol,i)
AktWert = oCell.String
oCell.String = Voran & AktWert
j=j+1
next i
End Sub
Anmerkungen
-
Das Makro erfordert, dass nur Zellen in einer einzigen Spalte ausgewählt sind. Sollte diese Bedingung nicht erfüllt sein, wird das Makro mit einer entsprechenden Meldung abgebrochen
-
In dieser Form funktioniert das Makro nur dann, wenn in den ausgewählten Zellen Text steht und es erfolgt auch keine Prüfung oder Fehlerbehandlung (insofern ist das als Prototyp eines Makros zu verstehen und nicht für einen produktiven Einsatz gedacht)
-
Eine Prüfung, ob mehr als 99 Zeilen ausgewählt wurden, erfolgt ebenfalls nicht. Es wird dann mit mehr als 2- stelligen Nummern weiter gemacht.
Getestet mit LibreOffice:
Version: 7.0.6.2; Build ID: 144abb84a525d8e30c9dbbefa69cbbf2d8d4ae3b
CPU threads: 8; OS: Linux 5.3; UI render: GL; VCL: kf5
Locale: de-DE (de_DE.UTF-8); UI: de-DE; Calc: threaded
Vielleicht hilft Dir das weiter.