すぐに役立つエクセルVBAマクロ集 - すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
Macro
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile

500連発・組み方講座フォロー

Big Color Pallet

[広告]
 
Excel VBA Macro
Excel DownLoad
© 1997 - 2007
Yoshioh Nagai.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Sample Macro  コントロール・コンボボックス Previous Next
コントロール 0.  ユーザーフォーム
1.  ラベル
2-1.エディットボックス
2-2.テキストボックス
3.  コンボボックス
4-1.リストボックス(ワークシート)
4-2.リストボックス
7.  トグルボタン
9.  コマンドボタン
11. マルチページ
13. スピンボタン
17. カレンダー
 3-1) リストをセット(1列型)
 3-2) リストをセット(2列型)
 3-3) リストをセット(重複除去)
 3-4) リストをセット(配列から)
 3-5) 選択されたら2列目を表示
 3-6) 1文字目一致で入力候補を表示
 3-7) IMEモードを設定する
 3-8) 入力・選択時のイベントマクロ
 
3-9) OKボタンクリック時のイベントマクロ
 
3-10)リスト項目をクリアする


3-1) コンボボックスのリストをセットする (1列型) もくじへ 使用可能なExcelのバージョン
'=========================================================================================
Private Sub UserForm_Initialize()               'ユーザーフォームを初期化する
10  For I = 0 To 7                              'Iが0から7まで(2行-2から9行-2まで)
20      ComboBox1.AddItem Worksheets("名簿").Cells(I + 2, 2).Value '名簿シートのB列
30  Next                                        '繰り返す
End Sub
'-----------------------------------------------------------------------------------------
<コメント>
※1 コンボボックスは、ユーザーフォームに作成する
※2 マクロは、作成したユーザーフォームのコードに記入する
※3 このマクロは、DBシートのB列の氏名を、コンボボックスのリストにセットしている
※4 20行目のAddItemメソッドで、名簿シートの内容をリストにセットしている
※5 10から30行目のコードで、名簿シートの2行目から9行目まで、反復処理している
※6 Initializeイベントで、このマクロが実行される
【名簿シート】                 【コンボボックス】
名簿シート    コンボボックス
サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox1_AddItem.xls 46KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-2) コンボボックスのリストをセットする (2列型) もくじへ 使用可能なExcelのバージョン
'=========================================================================================
Private Sub UserForm_Initialize()               'ユーザーフォームを初期化する
10  ComboBox1.ColumnCount = 2                   'コンボボックスの列は2列にする
20  For I = 0 To 7                              'Iが0から7まで(2行-2から9行-2まで)
30      ComboBox1.AddItem Worksheets("名簿").Cells(I + 2, 1).Value '名簿シートのA列
40      ComboBox1.List(I, 1) = Worksheets("名簿").Cells(I + 2, 2).Value '同じくB列
50  Next                                        '繰り返す
End Sub
'-----------------------------------------------------------------------------------------
<コメント>
※1 コンボボックスは、ユーザーフォームに作成する
※2 マクロは、作成したユーザーフォームのコードに記入する
※3 このマクロは、DBシートのB列の氏名を、コンボボックスのリストにセットしている
※4 10行目のColumnCountプロパティで、列の数を設定している
※5 30行目のAddItemメソッド、40行目のListプロパティで、名簿シートの内容をリストにセットしている
※6 20から50行目のコードで、名簿シートの2行目から9行目まで、反復処理している
※7 Initializeイベントで、このマクロが実行される
【名簿シート】                 【コンボボックス】
名簿シート    コンボボックス
サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox2_AddItem.xls 45KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-3) コンボボックスのリストをセットする (重複除去) もくじへ 使用可能なExcelのバージョン
'=========================================================================================
Private Sub UserForm_Initialize()               'ユーザーフォームを初期化する
Dim リスト As New Collection
Dim 列 As String, 上端セル As String, 最下端セル As String
Dim セル範囲 As Range, 各セル As Range
'
    列 = "B"                                    '※3
    上端セル = 列 & "2"                         '※4
    最下端セル = 列 & "65536"
    With Worksheets("SSS")                      '※5
        Set セル範囲 = .Range(.Range(上端セル), .Range(最下端セル).End(xlUp))
    End With
    For Each 各セル In セル範囲                 'セル範囲の各セルについて繰り返し処理
        On Error Resume Next                    '次行が実行時エラーならその次行から継続
        リスト.Add 各セル.Value, CStr(各セル.Value) 'Collectionオブジェクトにメンバを追加
        If Err.Number = 0 Then                  '実行時エラーが発生していなければ
            Me.ComboBox1.AddItem 各セル.Value   'コンボボックスのリストに項目を追加
        End If
        On Error GoTo 0
    Next
End Sub
'=========================================================================================
<コメント>
※1 コンボボックスはユーザーフォームに作成する
※2 このマクロはユーザーフォームのコードに記入する
※3 'B' にはコンボボックスのリストにセットするワークシートの列名を記入
※4 '2' には※3の列のデータの最上行を記入(この例は1行目に見出し行がある前提)
※5 'SSS' にはシート名を記入(並べ替え済のこと)
※6 重複のあるデータでもオートフィルタのリストのように重複を除去して表示される
   コンボボックス
※7 詳細説明 … Collectionオブジェクトにメンバを追加するAddメソッドとは

サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox1_Cyofuku.xls 42KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-4) コンボボックスのリストをセットする (配列から) もくじへ 使用可能なExcelのバージョン
'=========================================================================================
' ◆ユーザーフォームのコード◆
'-----------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
Dim 配列(4)
    配列(0) = "りんご"
    配列(1) = "バナナ"
    配列(2) = "みかん"
    配列(3) = "メロン"
    配列(4) = "ぶどう"
    ComboBox1.List = 配列                   'コンボボックスのリストに配列の値をセットする
End Sub
'-----------------------------------------------------------------------------------------
Private Sub ComboBox1_Change()
    MsgBox ComboBox1.ListIndex              '選択された行のインデックス番号を取得して表示
End Sub
'=========================================================================================
関連ページ: コンボボックスで選択されたリストに対応する配列の番号を取得するには


3-5) 選択されたら2列目を表示する (2列型) もくじへ 使用可能なExcelのバージョン
'=========================================================================================
Private Sub UserForm_Initialize()               'ユーザーフォームを初期化する
10  ComboBox1.ColumnCount = 2                   'コンボボックスの列は2列にする
20  For I = 0 To 7                              'Iが0から7まで(2行-2から9行-2まで)
30      ComboBox1.AddItem Worksheets("名簿").Cells(I + 2, 1).Value '名簿シートのA列
40      ComboBox1.List(I, 1) = Worksheets("名簿").Cells(I + 2, 2).Value '同じくB列
50  Next                                        '繰り返す
60  ComboBox1.TextColumn = 2                    '選択されたら2列目を表示する
End Sub
'-----------------------------------------------------------------------------------------
<コメント>
※1 前のケース(3-2)のコンボボックスで、選択されたら2列目(漢字氏名)を表示する
※2 10から50行目までは、前のケースと同じ
※3 60行目の TextColumnプロパティで、選択されたときに格納する列を設定している
【名簿シート】                 【コンボボックス】
名簿シート    コンボボックス

関連ページ: 2列型のコンボボックスで選択されたら2列目を表示してその値を取得するには?
サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox2_TextColumn.xls 45KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-6) 1文字目一致で入力候補を表示する もくじへ 使用可能なExcelのバージョン
'=========================================================================================
' ◆ユーザーフォームのコード◆
'-----------------------------------------------------------------------------------------
'ユーザーフォームを初期化するイベントマクロ
'-----------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
    ComboBox1.MatchEntry = fmMatchEntryFirstLetter '※1 「1文字目一致検索」に設定する
End Sub
'=========================================================================================
<コメント>
※1 MatchEntryプロパティを、「1文字目一致検索」に設定している
   くわしくはサンプルブックの「解説」シートを参照
【コンボボックス】
コンボボックス
サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox1_AutoComplete.xls 47KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-7) コンボボックスのIMEモードを設定する もくじへ 使用可能なExcelのバージョン
'=========================================================================================
' ◆ユーザーフォームのコード◆
'-----------------------------------------------------------------------------------------
'ユーザーフォームを初期化するイベントマクロ
'-----------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()
    ComboBox1.IMEMode = fmIMEModeHiragana       '※1 IMEを全角ひらがなモードでオンにする
End Sub
'=========================================================================================
<コメント>
※1 IMEModeプロパティの引数は、サンプルブックの「解説」シートを参照
※2 IME(Input Method Editor)とは、アジア言語のテキストを入力するためのプログラム
【コンボボックス】
コンボボックス
サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox1_IME.xls 47KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-8) 入力・選択時に動作するイベントマクロ もくじへ 使用可能なExcelのバージョン
'=========================================================================================
' ◆ユーザーフォームのコード◆
'-----------------------------------------------------------------------------------------
'コンボボックスに新しい文字列値を入力または選択したとき動作するイベントマクロ
'-----------------------------------------------------------------------------------------
Private Sub ComboBox1_Change()                            '※1
    Worksheets("SSS").Range("E10").Value = ComboBox1.Text '※2 選択結果をセルにセットする
End Sub
'=========================================================================================
<コメント>
※1 Changeイベントはコンボボックスなどで、新しい文字列値を入力または選択したときに発生する
※2 Textプロパティで値を取得して、セルにセットしている
   くわしくはサンプルブックの「解説」シートを参照
コンボボックス

 コンボボックスで入力または選択されると、
 すぐにセルへセットしている
サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox1_AutoComplete.xls 47KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-9) OKボタンクリックで動作するイベントマクロ もくじへ 使用可能なExcelのバージョン
'=========================================================================================
' ◆ユーザーフォームのコード◆
'-----------------------------------------------------------------------------------------
'「OK」ボタンが押されたときに動作するイベントマクロ
'-----------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()              '※1
    If ComboBox1.MatchFound Then                '※2 一致する項目がリストの中にあれば
        Unload Me                               'ユーザーフォームを閉じる
    Else                                        'なければ
        MsgBox "やり直してください", vbExclamation, "みつかりません"
    End If
End Sub
'=========================================================================================
<コメント>
※1 Clickイベントはコマンドボタンなどが、クリックされたときに発生する
※2 MatchFoundプロパティで、一致する項目がリストの中あったか聞いている
   くわしくはサンプルブックの「解説」シートを参照
サンプルブックのダウンロードは ここをクリック (YNxv233_ComboBox1_AutoComplete.xls 47KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


3-10) コンボボックスのリスト項目をクリアする もくじへ 使用可能なExcelのバージョン
'-----------------------------------------------------------------------------------------
Sub コンボボックスのリスト項目をすべて削除する()
    UserForm1.ComboBox1.Clear
End Sub
'-----------------------------------------------------------------------------------------