VBAで入力規則を設定

中級VBA

データの入力規則

 Excelで「データの入力規則」を使う場面は多いと思います。
 メニューから使用する場合が殆どだと思いますが、今回はVBAから設定する方法を紹介します。
 といっても、設定しなければならない項目が多いので、今回は「マクロの記録」を使ってそこからVBAに落とし込むようにします。

マクロの記録を使う

 まずはマクロの記録で入力規則を設定した場合、どのようなコードを吐き出すか見てみます。
 入力規則を設定したいセルを選択した状態で、メニューの「データ」>「データツール」「データの入力規則」をクリックします。
 ダイアログが表示されたら以下のように設定してください。
 今回は入力メッセージやエラーメッセージなどがどのように反映されるか確かめるために値を入力してみます。

設定タブ

 入力値の種類は、「リスト」を選択。元の値には、「◎,〇,×,△,□」と入力します。

 ここまでの設定だけでもOKですが、今回はその他の設定がどのように表示されるか見るために他の項目にも値を入れていきます。

入力時のメッセージタブ

 タイトルには、「記号の入力」。入力時のメッセージには、「○,◎,×,△,□のどれかを入力してください。」と入力します。

エラーメッセージタブ

 タイトルには、「記号化違います」。エラーメッセージには、「○,◎,×,△,□のいずれかを入力してください。」と入力します。

日本語入力

 ここでは変更はありません。

生成されたマクロ

 マクロの記録で以下のようなコードが生成されました。
 最後の Range(“D5”).Select は今回の処理とは関係ないので削除してOKです。

Sub Macro1()
'
' Macro1 Macro
'

'
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="○,◎,×,△,□"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = "記号の入力"
        .ErrorTitle = "記号が違います"
        .InputMessage = "○,◎,×,△,□のどれかを入力してください。"
        .ErrorMessage = "○,◎,×,△,□のいずれかを入力してください。"
        .IMEMode = xlIMEModeNoControl
        .ShowInput = True
        .ShowError = True
    End With
    Range("D5").Select
End Sub

 最初の Selection の部分に入力規則を割り当てています。
 SelectionはRnageに置き換えられますので、他の場所にも同じ入力規則を設定したい場合には、ここを書き換えれば良いでしょう。

 結果は以下のように表示されます。入力時のメッセージが表示されていますね。

 エラーの場合は以下のように表示されます。

入力規則を扱うオブジェクト

 入力規則は、Validationオブジェクトのメソッドやプロパティで設定します。
 種類がたくさんあるので今回使用するもを紹介します。

Validationのメソッド

 ・Delete   オブジェクトを削除します。
 ・Add    入力規則を追加します。

 Addメソッドは以下のような引数を取ります。
 Validation.Add(Type, AlertStyle, Operator, Formula1, Formula2)

  Type     入力規則の種類
  AlertStyle  入力規則エラーのスタイル
  Operator  データの扱い
  Formula1,Formula2  入力規則に使用されている値などを指定します

Validationのプロパティ

 今回 Validation で使用しているプロパティは以下の通りです。

  IgnoreBlank    空白値の入力を許可
  InCellDropdown  ドロップダウン リストの表示
  InputTitle     入力時のタイトル
  ErrorTitle     エラー時のタイトル
  InputMessage  入力時のメッセージ
  ErrorMessage  エラー時のメッセージ
  IMEModel    日本語の入力規則の設定
  ShowInput    入力メッセージの表示
  ShowError    エラーメッセージの表示

汎用的に使えるサンプルコード

 最後に、ご自身のプログラムで汎用的に使えるサンプルコードを紹介します。

'引数のRangeに入力規則のリストを設定
Sub myValidation(rng As Range)
    With rng.Validation
        .Delete
        .Add Type:=xlValidateList, _
            AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, _
            Formula1:="○,◎,×,△,□"
        
        .IgnoreBlank = True         '空白値の入力を許可
        .InCellDropdown = True      'ドロップダウン リストの表示
        .InputTitle = ""            '入力時のタイトル
        .ErrorTitle = ""            'エラー時のタイトル
        .InputMessage = ""          '入力時のメッセージ
        .ErrorMessage = ""          'エラー時のメッセージ
        .IMEMode = xlIMEModeNoControl   '日本語の入力規則の設定
        .ShowInput = True   '入力メッセージの表示
        .ShowError = True   'エラーメッセージの表示
    End With
End Sub

 下線部分を入力したいリストに変更し、必要なら他のオプションも設定しておきます。
 プルダウンリストを設定したい範囲(Range)を指定すればOKです。

Sub setValdat()
    Call myValidation(Range("B7:B10"))
End Sub

まとめ

 今回は、マクロの記録を使ってセルの入力規則の設定をプログラムコードにしてみました。
 こうする事で面倒なプロパティの設定などは自動で済ませることができます。

 あとは、Selection部分をRnageに置き換えて好きな場所に設定していけば良いでしょう。
 また、Formula1の部分をプログラムで変更することもできます。

 マクロの記録は、プログラミングの習得に使うのではなく、このような使い方をすれば重宝します。

 以下のコンテンツも参考にしてみてください。
  ・入力規則で空白を選択できるようにする
  ・入力規則が設定されているか調べる

タイトルとURLをコピーしました