(gelöst) Platzhalter im Makro verwenden?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

freak1
**
Beiträge: 23
Registriert: Di, 27.09.2005 09:32

(gelöst) Platzhalter im Makro verwenden?

Beitrag von freak1 »

Hallo!

Ich habe eine Tabelle, in der in einer Spalte Datum+Uhrzeit stehen, was aber zwischendurch als Text übernommen wurde, sodass es nicht mehr als Datum erkannt werden.
Die Liste sieht in der Tabelle so aus:
01.06.04 05:26
01.06.04 05:27
01.06.04 05:28
01.06.04 05:29
01.06.04 05:33
01.06.04 05:36
01.06.04 05:40
01.06.04 05:43
01.06.04 05:47
wenn ich jedoch auf eine Zelle klicke, erscheint in der Leiste oben:
'01.06.04 05:40
Man beachte den Apostroph vor dem Datum!!! Daran wird anscheinend erkannt, dass es sich nicht um ein Datum handelt.

Ich will nun alle Zeilen, in denen der 01.06.04 vorkommt, per Makro löschen. Ich hab jedoch nicht mal mit dem folgenden Erfolg gehabt, obwohl das immerhin genau die Zeichen aus der Zelle enthält:

Code: Alles auswählen

Sub ZeilenLoeschen01
   oDoc = thisComponent
   oSheet = oDoc.sheets(0)
   For sp = 1 to 10   '  Spaltenzähler
     for ze = 1 to 90  '  Zeilenzähler
       oZelle = oSheet.getCellByPosition(sp,ze)
        if oZelle.string = "'01.06.04 05:26" then
          oSheet.rows.removeByIndex(ze, 1)
          ze = ze - 1
        end if
      next
   next
End Sub
Die Zelle befindet sich auf D7, es existier nur "Tabelle1", sollte also funktionieren, oder?

Und wie mache ich das dann mit dem Platzhalter?
"*01.06*", oder was anderes?

Danke!
Zuletzt geändert von freak1 am Di, 06.12.2005 21:27, insgesamt 1-mal geändert.
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey freak,

Das ist schon alles richtig, nur: in der Zelle steht ausschließlich "01.06.04 05:26", das in der Eingabezeile dargestelt Hochkomma ist nicht Teil des Inhaltes (zeigt dir nur an, dass es sich um "Text" handelt.
Also musst du dieses Zeichen natürlich weglassen.

Nur - was willst du erreichen? Alle Zeilen löschen, deren String in einer Zelle mit "01.06" beginnt?

Also, das kannst du nicht mit Platzhaltern erledigen, sondern mit Teilstrings:

Bsp:

Code: Alles auswählen

if left(oZelle.string, 5) = "01.06" then 
hier werden die ersten 5 Zeichen des Inhaltes verglichen.

Aber:
Auch sonst ist dein Code falsch. Die Schleifenbedingung mit löschen der Reihen funktioniert natürlich nicht.
Wenn du die Schleife von 1-10 (zeilen) durchlaufen lässt, und der Zähler bei 2 steht, diese Zeile das Kriterium erfüllt und gelöscht wird, so rutschen alle übrigenZeilen eine Zeile hoch, die bisherige Zeile Nr. 3 ist jetzt die Zeile Nummer 2, dein Zähler wird aber auf 3 erhöht - also wird die ursprüngliche Zeile 3 und jetztige Zeile 2 gar nicht mehr geprüft -> Logikfehler :!:

Upps, sehe gerade, dass du den Zähler dann ja zurücksetzt. Na ja, das sollte dann ja doch funktionieren - ist aber kein sauberer Programmierstil.
Nutze lieber ein Do ...loop Schleife mit einer definierten Abbruchbedingung oder eine rückwärts laufende Schleife..

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
freak1
**
Beiträge: 23
Registriert: Di, 27.09.2005 09:32

Beitrag von freak1 »

Erstmal vielen Dank, es funktioniert!!! :D :D :D

Aber ich bin leider nicht so intelligent wie du glaubst :oops: , denn dieses Makro ist von dir selbst:viewtopic.php?t=4768

Jetzt hab ich aber noch eine Frage: Wie kann ich mehrere Makros nacheinander abarbeiten, ohne dass ich sie einzeln aufrufen muss? Ich habe viele Monate und muss in jedem einige Tage löschen (imer verschiedene), ich hätte also gerne soetwas wie ein "Übermakro", in dem ich angeben kann, welche Makros nun alle ausgeführt werden sollen... gibts sowas?
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey freak,
soetwas wie ein "Übermakro", in dem ich angeben kann, welche Makros nun alle ausgeführt werden sollen... gibts sowas?
"Übermakro" - lustiger Begriff :lol:
Naja, du kannst natürlich ein Makro schreiben, welches die anderen aufruft. Das ist einfach.
Aber ich glaube, du brauchst etwas ganz anderes.
Also, erläutere dich einfach mal in Worten, was genau du willst - nicht mit Myakros, sondern vom prinzipiellen Vorgehen. Beschreibe die aktuellen Arbeitysabläufe, den Ausgangszustand und den gewünschten Endzutand.

Dann schaun wir mal.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten