リストによる入力規則をマクロで設定する
リスト入力をVBAで Excel2013 マクロ講座 60回
マクロでドロップダウンリストの入力規則
入力規則はセルに入力できるデータを制限する機能です。特定のセル範囲にある数値や、リスト、日付、指定した長さの文字列などから選択するように設定できます。
よく使う便利な機能ですが、新しいブックを作成するたびに同じ入力規則を設定しているのならば、マクロにしてしまいましょう。
(サンプルファイルは、こちらから マクロ60回サンプルデータ)
入力規則を設定するValidationオブジェクト
入力規則はValidationオブジェクトで設定します。
Validationオブジェクトには、Add メソッド、
Delete メソッド、
Modify メソッドの3つのメソッドがあります。このValidation.Add メソッドを使って、下図のようなリストによる入力規則を設定します。
どこに入力規則を設定するかといえば、セル範囲です。
セル範囲を表すRangeオブジェクトで、Validation.Add メソッドを使って、入力規制したい項目を指定します。

セル範囲を表すRangeオブジェクトで、Validation.Add メソッドを使って、入力規制したい項目を指定します。

今回は、リストなので、引数TypeにxlValidateListを指定してやります。リスト項目は、Formula1にカンマで区切って記入します。

Sub リスト入力規則()
With ActiveSheet.Range("B2:B12").Validation
.Add Type:=xlValidateList, _
Formula1:="Linkin Park,MUSE,Nightwish"
End With
End Sub
マクロを実行すると、このようにリストが設定されます。

マクロの入力規則のリストを修正する
入力規則のリストを修正する場合は、Validation.Modify メソッドを使って修正します。

Sub リスト入力規則修正()
With ActiveSheet.Range("B2:B12").Validation
.Modify Type:=xlValidateList, _
Formula1:="Linkin Park,MUSE,Nightwish,Owl City,Take That,Backstreet Boys,"
End With
End Sub

マクロの入力規則のリストを削除する
入力規則を削除するには、ValidationオブジェクトのDeleteメソッドを使います。
Deleteメソッドは、入力規則を削除する場合だけつかうのではありません。 繰り返し使うようなシートで入力規則を使うには、最初にDeleteメソッドで既存の入力規則をあらかじめ削除します。 次に、新しい入力規則をAddメソッドで追加します。 (もし、すでに入力規則が設定されているセルに対してAddメソッドを実行すると実行時エラーが発生するの防ぐために、 Addメソッドの前には、Deleteメソッドで入力規則を削除しておくのです。)
Deleteメソッドは、入力規則を削除する場合だけつかうのではありません。 繰り返し使うようなシートで入力規則を使うには、最初にDeleteメソッドで既存の入力規則をあらかじめ削除します。 次に、新しい入力規則をAddメソッドで追加します。 (もし、すでに入力規則が設定されているセルに対してAddメソッドを実行すると実行時エラーが発生するの防ぐために、 Addメソッドの前には、Deleteメソッドで入力規則を削除しておくのです。)
選択範囲に入力規則を新規設定
選択範囲に入力規則で新規リストを設定したいなら、Rangeの代わりにSelectionを使います。
またリストは、名前付セル範囲を指定できますので、シートの範囲に名前を付けておくと次のようなコードを使うことができます。
Sub 選択範囲にリスト入力規則2()
With Selection.Validation
.Delete
.Add Type:=xlValidateList, _
Formula1:="=アーティスト"
End With
End Sub
スポンサーリンク
スポンサーリンク