Magische Methoden in VBA

Parantatatam

mag Cookies & Kekse
Hallo ihr VBAler,

ich beschäftige mich seit wenigen Wochen mit VBA und musste schnell merken, dass ich zu sehr verwöhnt bin von PHP. Bisher konnte ich meine Ansprüche trotzdem herunter schrauben, aber jetzt bin ich an einem Punkt, an dem mir nicht mal mehr Google helfen will. Ich suche eine Variante in VBA magische Methoden, wie sie unter PHP heißen, zu verwenden. Unter magische Methoden fallen Konstruktoren, Destruktoren, Get- und Set-Property-Befehle et cetera. Speziell suche ich etwas für dieses Problem:

Code:
'gibt der Textbox "textbox1" den Wert "neuer Wert"
'funktioniert bereits über Property Let
TextBox("textbox1") = "neuer Wert"

'ermittelt den Wert der Textbox "textbox1"
'funktioniert bereits über Property Get
MsgBox TextBox("textbox1")

'sperrt die Textbox "textbox1"
'funktioniert nicht => Problem!
TextBox("textbox1").disable
Theoretisch müsste das über Property Set gehen, allerdings weiß ich nicht wie und ob. Ansonsten habe ich immer wieder mal was von der Eigenschaft "Item" gehört, weiß allerdings nicht, wie ich die anwenden oder implementieren soll. Ein Beispiel gebe es hier.

Ich bin für jede Antwort dankbar, da für mich VBA 6 etwas zu sein scheint, was nur mit groben Worten funktioniert. Vielen Dank schon im Voraus!
 
Ich bin ein Stück weiter gekommen: es ist mir gelungen, dass ich Beispiel 1 und Beispiel 3 kombinieren kann, allerdings funktioniert Beispiel 2 jetzt nicht mehr, was daran liegt, dass Beispiel 3 ebenfalls über die Get-Eigenschaft läuft und dementsprechend auch beim zweiten Beispiel ein Objekt zurückgeben will. Deshalb konkretisiere ich meine Frage jetzt: gibt es eine Möglichkeit zu erkennen, ob eine Get-Eigenschaft in Kombination zu einem Friend-Befehl (korrigiert mich, wenn das der falsche Begriff ist) aufgerufen wurde oder nicht? Auf der verlinkten Seite wird durch die Anzahl an Argumenten differenziert, womit letztendlich das Ganze so aussehen würde (und was ich nicht möchte!):
Code:
'Das geht:
TextBox("textbox1") = "hallo"
TextBox.visible("textbox1") 'Sollte aber so aussehen: TextBox("textbox1").visible
MsgBox TextBox("textbox1")
 
Da VBA <> VBA ist, währe es noch gut zu wissen mit welchen MS-Produkt in welcher Version du arbeitest

Falls MS Access: Ist TextBox der name des Formulars?
Hab mal schnell folgendes in MS Access 2007 getestet und das geht.
Visual Basic:
Private Sub cmd1_Click()
    Me("txtSuchfeld").Visible = Not Me!txtSuchfeld.Visible
End Sub
 
Ja, also ich verwende Access 2002 und das was du mir dort notiert hast, dass funktioniert natürlich. TextBox() ist aber eine von mir erstellte Funktion und dementsprechend wollte ich die gleiche Funktionalität wie sie beispielsweise Me nutzt erzeugen. Bisher sehe ich da nur eine Möglichkeit über Collections, was aber auch nicht sehr schick ist, da man vorher erst alle Referenzen auf ein Steuerelement in der Collection speichern muss mit einer Schleife und das irgendwann auch sehr lange dauert.
 
Kannst du mir mal TextBox() zeigen?
Denn TextBox.visible klingt nicht nach einer Funktion sondern eher nach einer Klasse.
 

Neue Beiträge

Zurück