Seite 1 von 1
Makro Ausgabebox
Verfasst: So, 03.04.2011 20:30
von Soge
Hallo zusammen,
ich habe ein größeres Tabellendokument in dem ich mittels Makros Eingaben in verschiedene Tabellen einspeicher.
Zudem habe ich mittels ein paar Funktionen Abbruchbedingungen erstellt damit das Aakro nicht ausführt.
Nun kommt aber immer die Ausgabebox mit Laufzeitfehler, möchte das gerne ändern in eine Information warum er abbricht. (bsp "Speicherung nicht erfolgt da Daten fehlen" oder ähnlichem)
Wie stelle ich das an?
Vielen Dank schonmal im Vorraus.
mfg
Soge
Moderation,4: in BASIC Unterbereich verschoben; einen sinnvollen Betreff werde ich setzen, wenn mir das Problem klar ist
Re: Makro Ausgabebox
Verfasst: So, 03.04.2011 21:17
von komma4
Welche OOo-Version? Welches Betriebssystem?
Welche Meldung kommt genau, an welcher Stelle des Codes (diesen hier zeigen!)?
Mit einem Posting "bekomme Laufzeitfehler" kann hier keiner etwas anfangen: bitte mehr Angaben!
Re: Makro Ausgabebox
Verfasst: So, 03.04.2011 21:35
von Soge
Hi,
Ich habe OOo 3.2.1 und windows 7
... vielleicht habe ich mich oben etwas unklar ausgedrückt ... kann sein. mein wusch ist es nicht den Laufzeitfehler wegzubekommen sondern die meldung zu ändern
ok als Beispiel wenn ich zu viele Zeilen beschreiben will kommt
Code: Alles auswählen
BASIC-Laufzeitffehler.
Es ist eine Extension aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
an der stelle: blatt2=ThisComponent.sheets.getbyName(a(0))
Code: Alles auswählen
Nr: '----------------------------------Nr------------------------------------------
ifblatt=ThisComponent.sheets.getbyname("Eingabe_Ausgabe")
ifzelle=ifblatt.getcellrangebyName("C4")
ifziel=ifzelle.string
if ifziel = "" then goto Bezeichnung
blatt=ThisComponent.sheets.getbyname("Eingabe_Ausgabe")
zelle=Blatt.getcellrangebyName("C4")
ziel=zelle.string
zblatt=ThisComponent.sheets.getbyname("Eingabe_Ausgabe")
zzelle=zBlatt.getcellrangebyName("H4")
zziel=zzelle.string
a()=split(zziel,".")
if a(0)="$Vermögensverwaltung" then a(0)="Vermögensverwaltung"
--> blatt2=ThisComponent.sheets.getbyName(a(0)) <--
zelle2=blatt2.getcellrangebyName(a(1))
zelle2.formula=zie
Edit: ganz vergessen

viel lieber wäre mir eine meldung wie
Code: Alles auswählen
Mehr Zeilen können in dieser Tabelle nicht geschrieben werden!
Edit2: Der Laufzeitfehler kommt weil in der Zelle H4 nicht etwas steht wie "tabelle1.A1" sonder "kein platz verfügbar" also eine meiner abbruchbedingungen.
mfg Soge
Re: Makro Ausgabebox
Verfasst: So, 03.04.2011 21:50
von komma4
Du brauchst an der Stelle eine Abfrage, ob das gewünschte Tabellenblatt "Vermögensverwaltung" überhaupt vorhanden ist... das sagt die Fehlermeldung nämlich.
Also:
Code: Alles auswählen
If ThisComponent.Sheets().hasByName( a(0) ) Then
blatt2=ThisComponent.sheets.getbyName(a(0))
Else
Msgbox "Blatt " & a(0) & " nicht vorhanden!"
REM und hier eine geeignet Massnahme, wie EXIT SUB oder STOP
End If
Hilft das weiter?
Re: Makro Ausgabebox
Verfasst: So, 03.04.2011 22:01
von Soge
Hi,
um ehrlich zu sein nein. Das Tabellenblatt ist ja Vorhanden nur wird es eben in zelle H4 nicht angegeben weil die Tabelle voll ist.
eine Abrfage auf die Zelle H4 wäre mir lieber ... kenne mich im Makro einfach zu wenig aus ... den code hab ich vor 2 jahren hier aus dem forum für ein anderes Problem bekommen... aber ich steig noch nicht so richtig hinter die thematik was was bewirkt etc.
mfg
Soge
Re: Makro Ausgabebox
Verfasst: So, 03.04.2011 22:14
von komma4
Die Fehlermeldung "
no such element exception" in der Zeile mit Zugriff auf ein Tabellenblatt mit Name (getByName) bedeutet definitiv, dass das Blatt mit dem Namen nicht vorhanden ist.
Wenn Du H4 abfragen willst, dann mach' das auch
Code: Alles auswählen
If ThisComponent.Sheets().getByName( "Eingabe_Ausgabe" ).getCellRangeByName( "H4" ).String = "kein platz verfügbar" Then
Re: Makro Ausgabebox
Verfasst: So, 03.04.2011 22:29
von Soge
hi,
hab jetzt etwas gebraucht aber jetzt funktioniert es.
vielen Dank für die Mühen
mfg
Soge