Excel VBA セルにドロップダウンリストを作成して入力効率UP

スポンサーリンク
スポンサーリンク

セルにドロップダウンリストを作成する方法

セルにある決まった値を入力する場合は
入力規則のリストからリストに登録してある値を
ドロップダウンリストから選択して入力すれば
間違いがなく、入力のスピードアップにつながります。

入力規則をVBAで扱うには入力規則のダイアログボックスを表す
Validation【バリディーション】オブジェクトを操作します。

Sheet1のA列にドロップダウンリストで入力する列とします。
Sheet2のA列にドロップダウンリストに表示するリストを作成します。

ブックを開いたときに自動的にマクロが実行されるように
コードの記述場所を標準モジュールではなく
「Microsoft Excel Objects」モジュールの
Sheet1シート用モジュールのActivate【アクティベート】イベントプロシージャ
に記述します。
イベントプロシージャのWorksheet_Activateプロシージャは
シートがアクティブになった時にマクロが実行されます。

Worksheet_Activateプロシージャの使用方法







「sheet2」のA列にドロップダウンリストの表示するリストを作成します。



[Sheet1」のA列にドロップダウンを作成するコード例

Private Sub Worksheet_Activate()
Sheets("Sheet2").Visible = xlHidden
With Range("A:A").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="=Sheet2!" & Range("$A$1", Cells(Rows.Count, 1)).Address
.InputTitle = "入力規則"
.InputMessage = "ドロップダウンリストから選択して入力してください"
End With
End Sub

コードの解説

「Sheet1」のA列のセルにドロップダウンリストから値を選択して
入力をするコード例です。
ダウンリストに表示されるデータのリストは「Sheet2」のA列に記述します。
(※別シートのセル範囲を直接参照できるのは「Excel2007」以降です。)
使用する状況に応じてシートや列を変更してください。


2行目
【Sheets(“Sheet2”).Visible = xlHidden】
リストのデータを入力したSheet2をVisible(ビジブル)プロパティ
の値をxlHidden(エックスエルヒドゥン)に設定することで
Sheet2を非表示にしています。
詳細はシートを操作するをご覧ください。


3行目
【With Range(“A:A”).Validation】
アクティブシート(Sheet1)のA列全体をRangeオブジェクトで指定して
その範囲にValidation【バリデーション】オブジェクトを設定し
With【ウィッシュ】ステートメントで指定します。


4行目
【.Delete】
With【ウィッシュ】ステートメントで指定した
A列のValidation【バリデーション】オブジェクト(入力規則)に対して
Delete【デリート】メソッドを使用して入力規則を削除します。
これは、お決まりのようなもので
Validation【バリデーション】オブジェクト(入力規則)を追加する前には
必ず実行します。入力規則が設定されている範囲に重ねて入力規則を
追加するとエラーが発生することが理由です。
設定されていないことがわかっていても実行します。


5行目~7行目
【.Add _
Type:=xlValidateList, _
Formula1:=”=Sheet2!” & Range(“$A$1”, Cells(Rows.Count, 1)).Address】

With【ウィッシュ】ステートメントで指定した
A列のValidation【バリデーション】オブジェクト(入力規則)に対して
ValidationオブジェクトのAddメソッドで入力規則を追加します。
引数のType【タイプ】には、定数のxlValidateList【エックスエルバリデイトリスト】を
指定しドロップダウンリストを追加します。
引数Formula1【フォーミュラワン】にドロップダウンリストに表示するデータの
参照先を指定します。参照先は
Seet2のA列全体を参照してAddressプロパティを使用してFormula1で使用できる
参照方法にしています。参照は絶対参照で指定します。
Sheet2のA列の参照方法として
【”=Sheet2!$A$1:$A$1048576″】
この方法でも同じくA列全体を参照できます。


8行目
【.InputTitle = “入力規則”】
ValidationオブジェクトのInputTitle【インプットタイトル】プロパティで
入力時のメッセージのタイトルを指定しています。


9行目
【.InputMessage = “ドロップダウンリストから選択して入力してください”】
ValidationオブジェクトのInputMessage【インプットメッセージ】プロパティで
入力時のメッセージのを指定しています。

入力時メッセージのイメージ


非表示にしたSheet2を再表示する方法

Sheet1のタブの上でマウス右ボタンをクリックして
メニューの中から再表示を選択してSheet2を再表示します。




実行結果


以上で
セルにドロップダウンリストを作成して入力効率UP
についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク