Fehlermeldung Objektvariable nicht belegt

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Brischniak
*
Beiträge: 10
Registriert: Di, 08.03.2016 06:31

Fehlermeldung Objektvariable nicht belegt

Beitrag von Brischniak »

Hallo, ich habe folgende Makro-Funktion zum Ändern des Tabellenblattnamens erstellt:

Code: Alles auswählen

Function AENDERE_BLATTNAME(x)
dim oSheet as Object
oSheet = ThisComponent.CurrentController.ActiveSheet
oSheet.Name = oSheet.getCellRangeByName("B1").String
End Function
.

Nun schreibe ich bspw. in Zelle A1 die Formel

Code: Alles auswählen

=AENDERE_BLATTNAME(A2)
,
sodass der Blattname immer dann aktualisiert wird, wenn sich der Wert in A2 ändert.
Das funktioniert auch wunderbar. Nur jedesmal, wenn ich das gesamte Dokument schließe und erneut öffne, kommt die Fehlermeldung "Objektvariable nicht belegt." Wie kann ich das beheben?

Danke
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehlermeldung Objektvariable nicht belegt

Beitrag von Stephan »

Nur jedesmal, wenn ich das gesamte Dokument schließe und erneut öffne, kommt die Fehlermeldung "Objektvariable nicht belegt."
Das dürfte daran liegen das das ThisComponent-Objekt noch nicht voll verfügbar ist wenn beim Öffnen die Funktion aufgerufen wird.
Wie kann ich das beheben?
Da ich annehme das Änderungen des Blattnamens nur bei geöffneter Datei stattfinden müssen [1], sollte es genügen eine Fehlerbehandlung hinzuzufügen:

Code: Alles auswählen

Function AENDERE_BLATTNAME(x)
On Error Resume Next
dim oSheet as Object
oSheet = ThisComponent.CurrentController.ActiveSheet
oSheet.Name = oSheet.getCellRangeByName("B1").String
End Function
[1]
es bestünde ja auch grundsätzlich die Möglichkeit das XML der Datei direkt zu bearbeiten, dann wäre im Falle des späteren Öffnens der Datei u.U: der Zellwert der Zelle mit der benutzerdefinierten Funktion nicht aktuell wenn dieser nicht direkt beim Öfffnen aktualisiert würde. Diese Möglichkeit dürfte aber in 99% der Praxisfälle akedemischer Natur sein.


Gruß
Stephan
Karolus
********
Beiträge: 7524
Registriert: Mo, 02.01.2006 19:48

Re: Fehlermeldung Objektvariable nicht belegt

Beitrag von Karolus »

Hallo


Nimm das hier:

Code: Alles auswählen

Function aendere_namen(event)
cell = event
address = cell.CellAddress
r = address.Row
c = address.Column
If (c = 1) And (r = 0) Then  '# Zelle B1'
	cell.Spreadsheet.Name = cell.String
End if
End Function
und binde das ans Ereignis `Inhalt geändert` des Tabellenblatts ( →→Rechtsklick Tabreiter→Ereignisse … )
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Brischniak
*
Beiträge: 10
Registriert: Di, 08.03.2016 06:31

Re: Fehlermeldung Objektvariable nicht belegt

Beitrag von Brischniak »

Prima, die simple Fehlerbehandlung genügt mir schon. Danke, Stephan.
Vielen Dank aber auch für deine Antwort, Karolus.
Antworten