リストボックス(ActiveXコントロール)を作成しようとしています。このリストボックスは、ユーザーフォームではなく、ブックの「ダッシュボード」とラベルされたシートにあります。私は "データ"と書かれたシートから範囲を設定したいと思います。VBA:ワークシートであり、ユーザーフォームではなくListBox ActiveXコントロールを実装する
私の問題は、ワークブックのオープンイベントプロシージャにそれを設定した場合、「ブレークモードで実行できません」というブックが開いたときにエラーが発生するということです。ただし、ブレークポイントはまったくアクティブではありません。
「ダッシュボード」ワークシートのアクティブなイベントプロシージャに入力すると、ブックが開いているときに表示されません。別のワークシートをクリックした後でDashboardワークシートに戻ってから、そのワークシートが作成されます。
リストボックスを作成して、常に入力され準備が整うようにする方法がありますか?私は、リストボックスに関連付けられている多くのvLookup関数があり、リストボックスに値が設定されていない場合、残りのコードは機能しません。
これまでに持っていたコードを投稿します。 1つ目は、workbook_openのプロシージャでリストボックスを作成しようとするときです。 2番目の方法は、「ダッシュボード」ワークシートのアクティブ化手順です。
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
この次のコードは、私がシート3のコードワークシート上で持っているものですあなたはMSForms.ListBoxとしてcPlanetsを宣言しているが、あなたの質問にあなたはActiveXのリストボックスを使用して作業していると言う手順
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
ダッシュボードシート上でパブリック関数を作成しようとしましたが、これはリストを埋め込み、Workbook_Open()でこの関数を呼び出していますか? –
私もこれを試しましたが、ワークブックを開いてもまだ読み込まれません。パブリック関数addListsWorksheetActivate() – Rosario