Hallo,

Heinz Teucher schrieb:
> ich benutze jetzt eine Tabelle mit 13 Blättern. In 12 der
> Blätter setze
> ich den Inhalt
> =VERKETTEN("Monat: ";TABELLENNAME(TABELLE()-1);" ";$Stamm.$B$6)
>
> Beim Einsetzen erhalte ich den richtigen Inhalt angezeigt.
>
> Speichere ich das Dokument und öffne es erneut, bekomme ich
> den Fehler
> "BASIC-Laufzeitfehler. Objektvariable nicht belegt"  für die Zeile
>
> Tabellenname = thisComponent.Sheets(Nummer).Name
>
> im Makro Tabellenname, und zwar für jedes Tabellenblatt.

Weiß ich auf die Schnelle keine direkte Lösung (.CurrentComponent geht
offensichtlich auch nicht)

Ich würde eine Fehlerbehandlung in die Funktion einfügen:

On Error Resume Next

und zusätzlich ein Autostartmakro verwenden (bestmögliches Vorgehen
müßte man überlegen)

>
> Ausserdem fällt mir auf, dass beim Umbenennen eines
> Tabellenblattes der
> angezeigte Zellinhalt sich nicht verändert.

Kann ja auch nicht gehen, weil die Funktion davon keine Kenntnis
erlangen kann, selbst die eingebaute Funktion ZELLE() kann das meines
Wissens nicht.
Es wäre Listener notwendig, womit wir erstens wieder beim Thema
Autostartmakro sind und mir zweitens ein SelectionChange-Listener dafür
übertrieben vorkäme, ich 'aus dem Hut' aber zunächst nichts Anderes
weiß.

Ich kann 2 Möglichkeiten nennen:

*den Versuch das die Funktion auf Änderung des Blattnamens reagieren
soll, aufgeben und stattdessen den Blattnamen auf Änderung eines
Zellinhalts reagieren lassen:

Function Blattname(a)
On Error Resume Next
blatt = ThisComponent.CurrentController.ActiveSheet
blatt.name = a
End Function

(a ist die Zelle in der ein Text stehen muß der als Blattname verwendet
werden soll)

Da der Blattname ja vom letzten Speichern feststeht, schiene mir die
Fehlerbehandlung hier auch ohne 'Nebenwirkungen'

*es mit Bordmitteln zu lösen:
entferne die benutzerdefinierte Tabellenfunktion aus den
Makro-Bibliotheken (zur Sicherheit, ich könnte vermuten es träte sonst
ein Namenskonflikt auf) und füge unter Einfügen-Namen-Festlegen
Folgendes ein:

Name:
TABELLENNAME

zugeordnet zu:
RECHTS(ZELLE("FILENAME");(LÄNGE(ZELLE("FILENAME"))-FINDEN("#";ZELLE("FIL
ENAME"))-1))

Da Du das prinzipiell auch bei einer 'leeren' Datei machen kannst, diese
als Vorlage speichern und als Standdardvorlage setzen, steht Dir
TABELLENNAME dann uneingeschränkt zur Verfügung.


Gruß
Jörg

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Antwort per Email an