Excel VBA。入力規則をデータ読み取り後に設定しちゃうとさらに楽になります。
<Excel VBA:入力規則>
Excel VBAをつかって、テキストデータなどを読み取ったあとに、Excelでアレコレ設定するのもいいのですが、どっちみちならば、データを読み取ったときに、一緒にExcel VBAで構文をつくっておいて、実行させた方が、楽なこともあるようです。
そこで、今回は、入力規則をExcel VBAで構文を作ってみましょう。
次のように入力規則のリストを設定していきます。
通常Excelの入力規則のリストを設定する場合、データタブにある、「データ入力規則」からダイアログボックスを表示して、リストを設定するわけですが、リストは、事前に用意しておくのか、あるいは、入力して、設定するわけですが、結構面倒な処理なわけです。
Excel VBAで構文を作ってしまえば、シートにわざわざリストを用意しなくてもいいわけですね。
そして、Excel VBAの構文自体も、非常に簡単でわかりやすいと思います。
では、構文を確認してみましょう。
Sub 入力規則のリスト()
Dim i As Integer
For i = 2 To 6
With Cells(i, "b").Validation
.Delete
.Add Type:=xlValidateList, Formula1:="鉛筆,ボールペン,消しゴム"
End With
Next
End Sub
たったこの数行でいいわけです。
構文を説明していきます。
Dim i As Integer
は、このあと、For To Nextで使うための変数を設定しています。
今回は、数件だけなので、Integerにしています。
For i = 2 To 6~Next
今回は、最終行を持ってくる変数は用意していませんが、データが多い場合や、不規則な場合は、最終行を算出させるといいですね。
そして、ここからが、「入力規則のリスト」の心臓部です。
With Cells(i, "b").Validation
.Delete
.Add Type:=xlValidateList, Formula1:="鉛筆,ボールペン,消しゴム"
End With
With~End Wihですが、With以降の「Cells(i, "b").Validation」を繰り返して入力するのが面倒なのと、わかりやすくするために、Withを使用しています。
Cells(i, "b").Validationの「Validation(バリデーション)オブジェクト」が、入力規則のリストを設定するための構文です。
たったこれだけなんですね。
「.Delete」
意外と重要なのが、この一行です。なんで削除なのかというと、データの入力規則が事前に設定されていた場会、エラーになってしまうからですね。念のための保険的な一行です。
「.Add Type:=xlValidateList, Formula1:="鉛筆,ボールペン,消しゴム"」
セルに次の情報を追加します。
Type:=xlValidateList は、入力規則のリストを意味する引数です。
整数の場合は、xlValidateWholeNumberという引数を使います。
そして、「Formula1:="鉛筆,ボールペン,消しゴム"」
これが、リストの中身に該当します。
「”(ダブルコーテーション)」は、前後の1度だけですので、文字ごとに設定しないので注意が必要です。
なお、今回は、手入力でしたが、セルに事前にリスト内容を用意してある場合は、
「Formala1:=”=Sheet1!A2:A5”」
という表記で対応します。