Moin,
die Antwort fasse ich mal hier zusammen, damit alles beieinander bleibt und es es ja auch eine „Office-Lösung“ wurde.
@littlepinguin ich kann nur mit offenem Mund stauen, es hat so funktioniert mit deinem Script.
Ich bin dir zu tiefstem Dank verpflichtet!
Sogar ein Problem, dass ich noch gar nicht ansprach und welches ich „zu Fuß“ lösen wollten hat das Script nicht aus dem Tritt gebracht. Einige, wenige Einträge hatten nämlich kein Datum in der Datumsspalte eingetragen, befanden sich aber in der richtigen Zeile. Diese wurden nicht verschoben und es wurde auch keine zusätzliche Zeile erzeugt, juhu!
Noch mal fürs Protokoll, was ich konkret gemacht habe:
- LibreOffice 7.1.7.2
- die Kopfzeilen habe ich entfernt und temporär in eine andere Tabelle ausgelagert, so dass in Zelle A1 das erste Datum stand usw.
- Extras -> Makros -> Makros bearbeiten
- in das Programmierfeld unter „REM ***** BASIC *****“ u.g. Script eingefügt, die Zahl 400 auf 800 erhöht weil mein fertiger Kalender gute 2 Jahre umfasst was bummelig 800 Zeilen sind und direkt mit dem Playknopf ausgeführt
- Kopfzeilen wieder zurück gebracht
- zur Kontrolle in einer neu erstellten Spalte das passende Datum in A1 eingetragen und mit der Maus „runter gezogen“ zum ausfüllen
- zur Kontrolle in einer neu erstellten Spalte die Datumsdifferenz zwischen selbst und vom Script erzeugten Datumswert ausgerechnet (muss natürlich immer 0 sein wenn korrekt)
- beim überfliegen habe ich bis jetzt keinen Fehler entdeckt
feddich
OK, diesen Fehler hatte ich nicht, aber versuche dran zu denken wenn ich das Script noch mal einsetze.
Die 400 einfach der Länge der fertigen Tabelle anpassen. Wenn das regelmäßig eingesetzt wird, könnte man das mit 1-2 Zeilen mehr noch alles bissl schöner machen.
Das war kein Problem das eben von Hand zu ändern. Das Script ist super so wie es ist.
Allerdings habe ich wirklich NULL Ahnung von VBA und weiß überhaupt nicht was es gemacht hat.
Nur wenn du magst könntest du dazu kurz was schreiben, danke schön!
Ich bin mir noch nicht ganz über den Verwendungszweck sicher. Daran sollte sich die Lösung ja etwas orientieren, damit es auch nutzbar ist.
Es ist einfach ein Kalender/Tagebuch mit Einträgen, aber nicht an jedem Tag. Es soll mit einem anderen, vollständigen Kalender zusammen geführt werden.
Excelintern: ein 2. Blatt mit dem Startdatum in A1 und nach unten gefüllt reicht auch schon, um dann die Inhalte passend zum Datum zu suchen und zu übernehmen.
Für einmaligen gebrauch wäre es am schnellsten.
Ja, aber es sind über zwei Jahre und entsprechend viele Zeilen
Nochmals vielen Dank!
J~
Das Script von @littlepinguin
Sub Main
Dim alt as long
Dim b as long
Dim i
alt = ThisComponent.Sheets(0).getCellByPosition(0,0).value
for i = 1 to 400
b = ThisComponent.Sheets(0).getCellByPosition(0,i).value
if b<>0 then
if alt+1<b then
ThisComponent.Sheets(0).Rows.insertByIndex(i,b-alt-1)
end if
alt=b
else
alt=alt+1
end if
Next i
End Sub