コンボボックスにアクティブシートの名前を初期表示する|Excel VBA |
次のコードは、ユーザーフォームの表示時に、ブックに含まれるすべてのシート名をコンボボックスに追加して、アクティブシートを初期表示します。ユーザーフォームにコンボボックス「ComboBox1」を配置して実行してください。
これを応用すると、シート名のほかにも、配列やコレクションのメンバーをコンボボックスやリストボックスに追加して、特定の要素を選択された状態にすることができます。
Private Sub UserForm_Initialize()
Dim intCnt As Long, intListIndex As Long
Dim sh As Variant
Dim strSheetName As String
strSheetName = ActiveSheet.Name 'アクティブシートの名前を保存
ComboBox1.Clear 'コンボボックスをクリア
intCnt = 0 'カウンタ変数を初期化
For Each sh In Application.Sheets
'シート名をコンボボックスに追加
ComboBox1.AddItem sh.Name
'アクティブシートかどうかをチェックしてインデックス番号を保存
If strSheetName = sh.Name Then
intListIndex = intCnt
End If
intCnt = intCnt + 1
Next sh
'アクティブシートを初期表示
ComboBox1.ListIndex = intListIndex
End Sub