酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Excel VBAでコンボボックスの項目で指定したシートを表示する方法

コンボボックスの項目で指定したシートを表示する方法です。Excel 2003で動作確認を行っています。


f:id:ch3cooh393:20130102170918p:plain

新規ファイルを作成します。 あらかじめリストへ表示する為にA1~A3に「Sheet1,Sheet2,Sheet3」と入力します。


f:id:ch3cooh393:20130102170824p:plain

コントロール ツールボックスにある[コンボボックス]を選択し、シートに貼り付けます。同様に[コマンド ボタン]もシートに貼り付けます。

f:id:ch3cooh393:20130102170855p:plain

コントロール ツールボックスにある[デザインモード]を有効にし、先ほど貼り付けたコンボボックスを選択し、右クリックでプロパティを開きます。

f:id:ch3cooh393:20130102170903p:plain

Styleを「2- fmStyleDropDownList」に変更します。ListFillRangeに「Sheet1!A1:A3」にします。
貼り付けた[コマンド ボタン]をダブルクリックし、下記のコードをコピー&ペーストします。

' ボタンがクリックされた時に動く処理
Private Sub CommandButton1_Click() 

    ' 現在、どのシート名を選択しているか取得する
    Dim selectedValue As String
    selectedValue = ComboBox1.Value 

    ' 取得したシート名が存在しているかチェックする
    Dim isExist As Boolean
    isExist = IsExistSheet(selectedValue)
    If (Not isExist) Then
        ' 存在しないシートだったのでこれ以上処理を進めない
        Return
    End If 

    ' 選択されたシートを表示する
    Sheets(selectedValue).Select
End Sub 

' 特定のシートが存在するかどうか調べる
Private Function IsExistSheet(sheetName As String) As Boolean 

    Dim retval As Boolean
    retval = False 

    ' 全てのシートの中から同名のシートがないか検索する
    Dim sheet As Worksheet
    For Each sheet In Worksheets 

        ' シート名が同じかチェックする
        If (sheet.Name = sheetName) Then
            retval = True
            Exit For
        End If 

    Next sheet 

    IsExistSheet = retval
End Function 

以上で準備は完了です。

リストにて「Sheet2」を選択して、ボタンを押下してください。Sheet2へ表示が変わりましたでしょうか。