Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1200to1204
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

Abfrage ob Object-Variable einem Objekt zugewiesen

Abfrage ob Object-Variable einem Objekt zugewiesen
Martin
Hallo liebe Excelfreunde,
ich möchte gerne die Werte zahlreicher Steuerelemte einer UserForm (also von TextBoxen, ComboBoxen, CheckBoxen und OptionButtons) beim Schließen der UserForm in einem Dictionary Object ablegen, damit die UserForm-Steuerelemente nach dem erneuten Aufruf der UserForm wieder mit ihren "alten Werten" gefüllt werden können.
Dazu habe ich in Modul1 eine öffentliche Object-Variable für das Dictionary Object festgelegt:
Public MeldedatenDic As Object

Beim Schließen der UserForm werden alle Werte in das Dictionary Object übertragen:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Set MeldedatenDic = CreateObject("Scripting.Dictionary")
Dim cnt As Control
For Each cnt In Me.Frame1.Controls
Select Case TypeName(cnt)
Case "OptionButton", "CheckBox", "TextBox", "ComboBox"
'MsgBox cnt.Name & ": " & cnt.Value
MeldedatenDic(cnt.Name) = cnt.Value
End Select
Next
End Sub

Beim Aufruf der UserForm werden die Werte vom Dictionary Object zurück in die Steuerelemente der UserForm übertragen:

Private Sub UserForm_Initialize()
Dim myKey As Variant
For Each myKey In MeldedatenDic.Keys
Controls(myKey).Value = MeldedatenDic(myKey)
Next
End Sub
Das Problem: Beim ersten Aufruf der UserForm (also wenn das Dictionary Object noch nicht gefüllt ist), erscheint die Fehlermeldung "Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt".
Wie kann ich abfragen, ob mein Object (also das in Modul1 definierte "MeldedatenDic") bereits zugewiesen wurde?
Viele Grüße
Martin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
If Not MeldedatenDic Is Nothing Then... o.T.
28.02.2011 15:23:56
Josef
Gruß Sepp

Super, klappt! Trotzdem noch eine Frage dazu...
28.02.2011 15:33:44
Martin
Vielen lieben Dank Josef,
jetzt klappt alles wie gewünscht. Etwas in dieser Art hatte ich vorher selbstverständlich auch schon probiert, aber das ging nicht:
Private Sub UserForm_Initialize()
'Warum geht folgende Zeile nicht?
If MeldedatenDic = Nothing Then Exit Sub
Dim myKey As Variant
For Each myKey In MeldedatenDic.Keys
Controls(myKey).Value = MeldedatenDic(myKey)
Next
End Sub
Ich verstehe nicht, warum es mit If MeldedatenDic = Nothing Then Exit Sub nicht geklappt hat. Da kommt die Fehlermeldung "Fehler beim Kompilieren - Unzulässige Verwendung eines Objekts". Würdest du mir das bitte erklären?
Viele Grüße
Martin
Anzeige
anstatt dem "=" muss "is" stehen,
28.02.2011 15:43:26
Holger,
, glaube ich zumindest ;)
okay, darauf hätte ich selbst kommen können...
28.02.2011 15:52:54
Martin
Vielen Dank auch dir Holger. Nun ist alles klar.
Schöne Grüße
Martin
AW: okay, darauf hätte ich selbst kommen können...
28.02.2011 15:58:53
Holger,
Darauf bin ich auch sehr oft reingefallen und manchmal unterscheidet sich die Syntax auch je nach Object.
Ich lese gerade ein Buch über Windows Objektprogrammierung und da wird dann einiges klarer.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige