Ich versuche, ein Listenfeld (ActiveX-Steuerelement) zu füllen. Dieses Listenfeld befindet sich auf einem Blatt mit der Bezeichnung "Dashboard" meiner Arbeitsmappe und kein Benutzerformular. Ich möchte es mit einem Bereich von einem Blatt mit der Bezeichnung "Data" bevölkern.VBA: Bestücken ListBox ActiveX-Steuerelement, auf Arbeitsblatt und nicht Benutzerformular
Mein Problem ist, dass, wenn ich es auf der Arbeitsmappe geöffnet Ereignisprozedur zu füllen, ich eine Fehlermeldung erhalten, wenn die Arbeitsmappe öffnet, dass es „nicht im Unterbrechungsmodus ausführen kann.“ Es sind jedoch keine Breakpoints aktiv.
Wenn ich es auf der „Armaturenbrett“ Arbeitsblatt aktiv Ereignisprozedur zu füllen, wird es nicht füllen, wenn die Arbeitsmappe geöffnet ist. Es wird nur ausgefüllt, wenn ich auf ein anderes Arbeitsblatt klicke und dann zurück zum Dashboard-Arbeitsblatt gehe, dann wird es ausgefüllt.
Gibt es einen besseren Weg, um das Listenfeld zu füllen, so dass es immer bevölkert ist und bereit zu gehen? Ich habe viele vLookup-Funktionen, die dem Listenfeld zugeordnet sind, und wenn das Listenfeld nicht ausgefüllt ist, wird der Rest meines Codes nicht funktionieren.
Ich werde meine Codes schreiben, die ich bisher haben. Die erste ist, wenn ich versuche, die Listbox durch die workbook_open even-Prozedur zu füllen. Die zweite Möglichkeit besteht in der Aktivierung des Arbeitsblattes "Dashboard".
Private Sub Workbook_Open()
Dim strName As String
Dim blDone As Boolean
Dim cPlanets As MSForms.ListBox
Dim vArray As Variant
Dim shtData As Worksheet
Dim wkbSolarSystem As Workbook
Set wkbSolarSystem = Application.Workbooks("workbookname.xlsm")
Set shtData = wkbSolarSystem.Worksheets("Data")
Set cPlanets = wkbSolarSystem.Worksheets("Dashboard").lstPlanets
vArray = shtData.Range("Planets").value
cPlanets.List = vArray
cPlanets.ListIndex = 3
'input box message for user when workbook opens up
strName = InputBox("Hello! Please enter your name", "Welcome!")
'check if there is a name entered via loop and if statement
Do
If Len(strName) = 0 Then
'if no name entered, ask user again
MsgBox ("Please enter a valid name to continue"), vbCritical, "Valid Name Required"
'ask user to type in name again
strName = InputBox("Hello! Please enter your name", "Welcome!")
Else
'display message with information for user
MsgBox ("Hello, " & strName)
blDone = True
End If
'finish loop statement
Loop Until blDone = True
Dieser nächste Code ist diejenige, die ich auf Sheet3 Code-Arbeitsblatt Verfahren
Private Sub Worksheet_Activate()
Dim shtData As Worksheet
Dim wkbSolarSystem As Workbook
Set wkbSolarSystem = Application.Workbooks("workbookname.xlsm")
Set shtData = wkbSolarSystem.Worksheets("Data")
lstPlanets.List = shtData.Range("Planets").value
lstPlanets.ListIndex = 3
End Sub
haben Sie eine öffentliche Funktion auf dem Armaturenbrett Blatt zu machen versucht, die die Liste füllt, und rufen Sie diese Funktion auf Workbook_Open()? –
Ich habe das auch versucht, aber es wird immer noch nicht gefüllt, wenn die Arbeitsmappe geöffnet wird. Öffentliche Funktion addListsWorksheetActivate() – Rosario