ich ein öffentliches globales Dictionary-Objekt in einem regulären Modul wie folgt deklarierte:Globale Wörterbuch Objekt Erreichbar von einer Userform
Public dicModels As Scripting.Dictionary 'Microsoft Scripting Runtime has been added as a reference
Ich habe folgenden Rückruf:
Sub CreatePPT_OnAction(control As IRibbonControl)
Call CurrentBooks
Dim frmPPT_Slide As FPowerPoint
Set frmPPT_Slide = New FPowerPoint
frmPPT_Slide.Show
Set frmPPT_Slide = Nothing
End Sub
Hier mein Unterprogramm für die ist Call-Verfahren:
Sub CurrentBooks()
Dim wks As Excel.Worksheet
Dim vObject As Variant
If Not dicModels Is Nothing Then Exit Sub
Set dicModels = New Dictionary
For Each wks In ActiveWorkbook.Worksheets
For Each vObject In wks.ListObjects
If Left(vObject.Name, 3) = "TM_" Then
dicModels.Add Key:=vObject.Name, Item:=Right(vObject.Name, Len(vObject.Name) - InStr(1, vObject.Name, "_"))
End If
Next vObject
Next wks
End Sub
Hier ist mein Initialize-Ereignis in der Userform (iCounter ist ein Modulebene Variable als private deklariert):
Private Sub UserForm_Initialize()
Me.Caption = "Main Tracking Model"
Me.lblModel.Caption = "Choose a model to be reflected on the PPT slide."
For iCounter = 0 To dicModels.Count '<< ERROR!!!!!
Me.lstModels.AddItem dicModels.Items(iCounter)
Next iCounter
End Sub
Ich versuche, ein globales Wörterbuch-Objekt zu erstellen zugänglich von der Userform Klasse. Obwohl ich es auf der Modulebene veröffentlicht habe, bekomme ich immer noch Object variable or With block variable not set
. Ich muss etwas falsch verstehen oder übersehen. Jede Hilfe wird geschätzt. Vielen Dank!
In ' CurrentBooks verwenden Sie 'Set dicModels = New Dictionary'. Der Code, wie er hier in der Frage steht, sollte funktionieren, oder zumindest sollten die 'dicModels' nicht' Nothing' sein. Es soll sein, dass etwas geschieht, was wir hier nicht sehen und was das Dik setzt. zu "Nichts"? Und eine Frage: Der Code von 'UserForm_Initialize' gehört zum 'FPowerPoint'-Recht? – dee
@dee Ja, der Code in 'UserForm_Initialize' gehört zu' FPowerPoint'. Offensichtlich setzt etwas das dic-Objekt auf "Nichts". Sonst stimmt etwas mit meinem Umfang nicht. Ich werde mehr Debugging durchführen. – Brian