Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Get und Let Methoden

Get und Let Methoden
02.04.2015 10:03:59
Tobias Nieder

Hallo ich hab ein kleines Problem bei VBA
ich habe mir eine Klasse gebaut mit diveresen Eigenschaften, die ich mit Let/Get - Methode lese oder beschreibe.
In der tatsächlichen Anwendung bekomme ich aber die Fehlermeldung das die Objektvariable nicht deklariert sei.
--------------------------------Klasse clsBericht-------------------------------
Dim eaussage As String

Private Sub Class_Initialize()
eaussage = "Test"
End Sub

Public Property Get Aussage() As String
Aussage = eaussage
End Property
--------------------------------Methodenaufruf--------------------------------------
Dim thisbericht As clsBericht
Set thisbericht = New clsBericht
If thisbericht.Aussage = "" then <---- hier kommt der fehler
...
--------------------------------------------------------------------------------
Vielen Dank im Vorraus

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Get und Let Methoden
02.04.2015 10:28:51
Luschi
Hallo Tobias,
dann nutze mal die anstehenden freien Tage und vertiefe Dich in dieses Tutorial:
http://www.online-excel.de/excel/singsel_vba.php?f=51
Folge 1 - 8
Da wirst Du erkennen, das die Properties 'Get' & 'Let' nur die Hülle sind, um private
Variablen abzufragen oder einen Wert zuzuweisen.
Good Luck & Gruß von Luschi
aus klein-Paris

AW: Get und Let Methoden
02.04.2015 10:47:17
Tobias Nieder
Genau nach diesem Tutorial hab ich meine Klasse aufgebaut, aber es funktioniert leider nicht richtig.

AW: Get und Let Methoden
02.04.2015 10:50:24
Luschi
Hallo Tobias,
dann zeige doch mal Deinen Versuch als praktisches Beispiel, alles Andere ist nur herumdoktern am leblosen Patienten.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Get und Let Methoden
02.04.2015 11:13:23
Tobias Nieder
---------------------------Klasse clsBericht_test---------------------
Dim eaussage As String
Private Sub Class_Initialize()
eaussage = Empty
End Sub
Public Property Let Aussage(ByVal newaussage As String)
eaussage = newaussage
End Property
Public Property Get Aussage() As String
Aussage = eaussage
End Property
--------------------kleines Test programm----------------------------------
Sub test()
Dim msg As String
Dim bericht As clsBericht_test
Set bericht = new clsBericht_test
bericht.Aussage = "hallo"
If bericht.Aussage = "" Then msg = "Klappt nicht" Else test = "Klappt"
MsgBox msg
End Sub 
Den vollständigen Code darf ich nicht veröffentlichen, allerdings funktioniert es auch in dem kleinen test schon nicht.
Der Fehler bleibt der selbe "Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt". Dieser wird beim debuggen aber erst in der Zeile mit der if anweisung angezeigt, als quickinfo steht bei beiden aufrufen der property Aussage "bericht.Aussage=< Objektvariable oder die With-Blockvariable nicht festgelegt>"

Anzeige
AW: Get und Let Methoden
02.04.2015 11:13:40
Tobias Nieder
---------------------------Klasse clsBericht_test---------------------
Dim eaussage As String
Private Sub Class_Initialize()
eaussage = Empty
End Sub
Public Property Let Aussage(ByVal newaussage As String)
eaussage = newaussage
End Property
Public Property Get Aussage() As String
Aussage = eaussage
End Property
--------------------kleines Test programm----------------------------------
Sub test()
Dim msg As String
Dim bericht As clsBericht_test
Set bericht = new clsBericht_test
bericht.Aussage = "hallo"
If bericht.Aussage = "" Then msg = "Klappt nicht" Else test = "Klappt"
MsgBox msg
End Sub 
Den vollständigen Code darf ich nicht veröffentlichen, allerdings funktioniert es auch in dem kleinen test schon nicht.
Der Fehler bleibt der selbe "Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt". Dieser wird beim debuggen aber erst in der Zeile mit der if anweisung angezeigt, als quickinfo steht bei beiden aufrufen der property Aussage "bericht.Aussage=< Objektvariable oder die With-Blockvariable nicht festgelegt>"

Anzeige
AW: Get und Let Methoden
02.04.2015 11:13:44
Tobias Nieder
---------------------------Klasse clsBericht_test---------------------
Dim eaussage As String
Private Sub Class_Initialize()
eaussage = Empty
End Sub
Public Property Let Aussage(ByVal newaussage As String)
eaussage = newaussage
End Property
Public Property Get Aussage() As String
Aussage = eaussage
End Property
--------------------kleines Test programm----------------------------------
Sub test()
Dim msg As String
Dim bericht As clsBericht_test
Set bericht = new clsBericht_test
bericht.Aussage = "hallo"
If bericht.Aussage = "" Then msg = "Klappt nicht" Else test = "Klappt"
MsgBox msg
End Sub 
Den vollständigen Code darf ich nicht veröffentlichen, allerdings funktioniert es auch in dem kleinen test schon nicht.
Der Fehler bleibt der selbe "Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt". Dieser wird beim debuggen aber erst in der Zeile mit der if anweisung angezeigt, als quickinfo steht bei beiden aufrufen der property Aussage "bericht.Aussage=< Objektvariable oder die With-Blockvariable nicht festgelegt>"

Anzeige
AW: Get und Let Methoden
02.04.2015 11:30:22
Luschi
Hallo Tobias,
wenn Du nicht eine kleine Testmappe hier bereitstellen willst (od2r in der Lage bist!), dann sage ich Servus und ruhe mich an den anstehenden Festagen aus!
Gruß von Luschi
aus klein-Paris
PS: Denn was Du da vorhast, ist schon ein bischen Tricky, denn man muß ja die einzelnen Klassen noch in einer Collection speichern, um eine Gesamtauswertung zu starten.

AW: Get und Let Methoden
02.04.2015 11:35:41
Tobias Nieder
Ich versuche mal eine testmappe zu bauen, tut mir leid wegen der Umstände
Ja das es nicht einfach ist is mir klar, aber soweit bin ich auch noch nicht. ich würde das gerne erstmal so zum laufen bekommen.

Anzeige
AW: Get und Let Methoden
02.04.2015 13:15:01
Tobias Nieder
Ich hab eine Testmappe zusammengebaut, vlt kannst du damit was anfangen, wie gesagt tut mir leid wegen der umstände
https://www.herber.de/bbs/user/96832.xlsm

AW: Get und Let Methoden
02.04.2015 11:12:08
Nepumuk
Hallo,
fügst du in der Prozedur vor der Abfrage ein ActiveX-Control in eine Tabelle ein?
Gruß
Nepumuk

AW: Get und Let Methoden
02.04.2015 11:16:19
Tobias Nieder
eine dropdown liste ja, allerdings weiß ich nicht ob das unter die activex elemente fällt

AW: Get und Let Methoden
02.04.2015 11:18:13
Nepumuk
Hallo,
OLEObjects.Add ist das Stichwort.
Gruß
Nepumuk

AW: Get und Let Methoden
02.04.2015 11:21:23
Tobias Nieder
Dann nicht, läuft über Range(xy).Validation (und dann .Add xlValidateList mit benannten bereichen)

Anzeige
AW: Get und Let Methoden
02.04.2015 11:26:20
Nepumuk
Hallo,
dann kann ich das ohne die Mappe / den kompletten Code auch nicht sagen.
Gruß
Nepumuk

AW: Get und Let Methoden
02.04.2015 11:32:36
Tobias Nieder
Mh, wie schon erwähnt ich kann den Code leider nicht öffentlich machen, schon gar nicht die ganze mappe. Aber du kennst das problem bei activex elementen? gibt es dafür eine passende fehlerlösung vlt kann ich mir das dann selbst zusammenbauen
Viele dank

AW: Get und Let Methoden
02.04.2015 12:02:36
Nepumuk
Hallo,
ist der Code so schlecht weil du ihn nicht veröffentlichen willst? Sag mir was er macht, und ich baue ihn die in ein paar Minuten nach mit der Hälfte der Zeilen und doppelt so schnell.
Gruß
Nepumuk

Anzeige
AW: Get und Let Methoden
02.04.2015 13:13:54
Tobias Nieder
Das hat mit wollen leider nichts zutun, ich darf es einfach nicht und nein :D er ist vermutlich etwas chaotisch aber das hängt dran das ich da die ganze zeit drin rumfuhrwerke aber sonst würde ich den code nicht als schlecht bezeichnen er tut was er soll (eigentlich).
Aber ich habe jetzt mal eine testmappe gebaut, die macht ungefähr das was die richtige machen soll und ich hab wieder den Fehler drin
https://www.herber.de/bbs/user/96832.xlsm
Grüße tobi

AW: Get und Let Methoden
02.04.2015 13:35:45
Nepumuk
Hallo,
der Zugriff auf die Eigenschaft erfolgt außerhalb der If-End If Verschachtelung die Initialisierung der Klasse aber innerhalb der Verschachtelung. Wenn du genau die Zelle D5 änderst dann klappt es auch.
Gruß
Nepumuk

Anzeige
AW: Get und Let Methoden
02.04.2015 13:38:49
Tobias Nieder
Tatsächlich, Vielen vielen Dank ! wenn ich so drüber nachdenke hätte ich da auch selbst drauf kommen können, macht ja sinn das er das außerhalb net erkennt :D

AW: Get und Let Methoden
02.04.2015 13:45:57
Namenloser
Hallo
Die Formatierung deines Codes ist unübersichtlich: fehlende Einrückung.
Die Instanzierung der Klasse findet innerhalb einer If-Klausel statt, trifft die If-Bedingung nicht ein wird die Klasse auch nicht instanziert und daher kommt es am Ende zu einer berechtigten Fehlermeldung.
2 Möglichkeiten: dim und Set der klasse vor der If-zeile ausführen oder die Zeile mit der FM in den If/End If versetzen.
Anderer Tip: Eine Variable vom Typ String kann nie Empty sein, diese Wertzuweisung ist dem Variant vorbahalten. Hier deinString = "" oder deinString = vbNullstring.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige