"Objektvariable nicht belegt" bei Tabellenstart

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

"Objektvariable nicht belegt" bei Tabellenstart

Beitrag von DerThomas »

Guten Abend,

Jürgen hatte mir eine schöne Hilfe für die Aktivierung eines Buttons mit einem Makro geschrieben. Der Button sollte dabei aktiv werden, wenn 3 Felder einen bestimmten Wert hatten. Das hat auch super geklappt, danke nochmal :)

Ich wollte jetzt aber, wenn eines der drei Felder geändert wird, das der Button wieder inaktiv wird. Das hat wunderbar geklappt mithilfe von diesem Makro, das ich mir aus Jürgens erstem Makro und Stefans Site zusammen geschustert habe :

Code: Alles auswählen

function Button_aktivieren()
	myDoc = thisComponent
	mySheet = myDoc.sheets("start")
	mycell = mysheet.getCellByPosition(0,0)
	myvalue=mycell.value
	if myvalue <> 0 then : Button_enabled
	end if
end function

Sub Button_enabled
   Dim vButton, vForm
   Dim oForms
   	myDoc = thisComponent
	mySheet = myDoc.sheets(0)
	mycell = mysheet.getCellByPosition(0,0)
	myvalue=mycell.value
   oForms = ThisComponent.CurrentController.ActiveSheet.DrawPage.Forms
   vForm = oForms.getByIndex(0) 'Erstes Tabellenblatt
   vButton = vForm.getByName("PushButton") 'Name der Schaltfläche
   'vButton.Label = "Tabelle ausblenden" 'Beschriftung der Schaltfläche (Titel)
   
   if myvalue = 3 then : vButton.enabled = True 'Schaltfläche aktivieren
   else : vButton.enabled = False 'Schaltfläche deaktivieren
   end if
End Sub[/co
Das funktioniert wunderbar, und mit Hilfe des anderen Makros von Jürgen wird die Tabelle "Start" dann ausgeblendet, wenn der aktivierte Button gedrückt wird. Soweit, so gut. Speichere ich die Tabelle aber jetzt und starte sie neu, bekomme ich diese Fehlermeldung : "BASIC-Laufzeitfehler Obejektvariable nicht belegt"
Liegt das daran das die Tabelle "Start" ausgeblendet ist ? Und wenn ja, wie kann ich diese Fehlermeldung umgehen ?

Ich wäre echt dankbar für jede Hilfe !
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: "Objektvariable nicht belegt" bei Tabellenstart

Beitrag von turtle47 »

Hallo Thomas,

so wie Du das Makro jetzt aufgbaut hast, dann wird Zelle "A1" auf jede beliebige Zahl geprüft und das natürlich auch beim Starten der Datei.

Die Sub "Button_enabled" wird also schon dann ausgeführt wenn die Datei noch nicht vollständig geladen ist.

Um den Fehler zu unterdrücken kannst Du folgendes machen:
Schreibe am Anfang der Sub "Button_enabled"

Code: Alles auswählen

Sub Button_enabled
	on error goto weiter
	.......
als Ender Sub

Code: Alles auswählen

   .........
   weiter:
End Sub
So wird die Fehlermeldung unterdrückt.
Damit werden andere Fehler die Auftreten könnten, was bei diesem kleinen Makro zwar unwahrscheinlich ist, zwar auch unterdrückt, aber in diesem Fall praktikabel.

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
DerThomas
*
Beiträge: 15
Registriert: Do, 22.01.2009 14:43

Re: "Objektvariable nicht belegt" bei Tabellenstart

Beitrag von DerThomas »

Hallo Jürgen,

super, danke für Deine Hilfe :D

Mit dem "goto" im Sub hatte ich die Fehlermeldung immernoch (vielleicht hatte ich es falsch umgesetzt) und ich hab dann ein bischen weiter probiert. Jetzt sieht der Code so aus :

Code: Alles auswählen

function Button_aktivieren(wert)
	on error goto weiter
	if wert <> 0 then : Button_control
	end if
	weiter:
end function

Sub Button_control
   	Dim vButton, vForm
   	Dim oForms
   	myDoc = thisComponent
	mySheet = myDoc.sheets(0)
	mycell = mysheet.getCellByRange("$A$1")
	myvalue=mycell.value
   	oForms = ThisComponent.CurrentController.ActiveSheet.DrawPage.Forms
   	vForm = oForms.getByIndex(0)
   	vButton = vForm.getByName("PushButton")
   	if myvalue = 3 then : vButton.enabled = True
   	else : vButton.enabled = False
   	end if
End Sub
Das funktioniert :D

Möchtest Du die fertige Tabelle einmal sehen ? Falls ja sende ich sie gerne, pm mir einfach Deine Email Adresse !

Nochmals vielen Dank für Deine Hilfe, hat mich ein großes Stück weiter gebracht :)

Viele Grüße !

Thomas
Antworten