入力規則その1

入力規則の主な役割は、データを選択入力にして入力を楽にかつ確実にする事と、一方、入力されたデータを一定の規則に基づいて判別して正常なデータのみを受付ける事になります。
単純な入力規則をセルに適用するには、なにもvbaを使う必要もありませんが、選択階層が複雑になってくるとどうしても避けては通れません。
ここで用いるのはValidationオブジェクト関連です。
Validationオブジェクト情報を取得するには 、RangeオブジェクトのValidationプロパティを使用します。
Addメソッドを使用して、その規則を一定の範囲に追加し、新しいValidationオブジェクトを作成します。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.validation
Validationオブジェクト情報を取得するには 、RangeオブジェクトのValidationプロパティを使用します。
Addメソッドを使用して、その規則を一定の範囲に追加し、新しいValidationオブジェクトを作成します。
(公式情報)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.validation
このページでは、入力規則の中でもよく使われる選択式の入力規則について説明します。 選択式入力の場合は、参照元の情報をどの様に記述するかで様々な方法があります。
具体的には、基本的なコードの中の「Formula1」をどの様に定義するかで 主に、
1)カンマ区切りの文字列
2)名前
3)範囲
------------------------------------------------------------------------
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="*この部分*"
End With
------------------------------------------------------------------------
の3とおりがあります。
2)名前
3)範囲
------------------------------------------------------------------------
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="*この部分*"
End With
------------------------------------------------------------------------

この例は、「まぐろ,たい,いわし,さんま,さば,ふな」の文字列から選択する様な設定です。
カンマ区切り文字列を用いる方法は参照元が比較的大規模なマトリックス表の様な場合に、対象範囲が具体的に内容がつかめてコード化(自動でカンマ区切り文字列にする)しやすいと思います。(入力規則その2で例が出てきます)
●基本的なコード例(名前の利用)適用範囲:Range("a3:a13") 文字列:まぐろ,たい,いわし,さんま,さば,ふな
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="まぐろ,たい,いわし,さんま,さば,ふな" '
End With
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="まぐろ,たい,いわし,さんま,さば,ふな" '
End With
カンマ区切り文字列による入力規則
入力規則の解除
文字列による入力規制(ダウンロード)

この例は、あらかじめ参照範囲の名前定義をしています。
excelメニュー(「数式」-->「名前の定義」で名前:さかな 範囲:=Sheet1!R3C8:R8C8
●基本的なコード例(名前の利用)適用範囲:Range("a3:a13") 名前:さかな
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="=さかな" '
End With
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="=さかな" '
End With
名前による入力規則
名前による入力規制(ダウンロード)

この場合は、参照元を=Sheet1!R3C8:R8C8の様な範囲で指定します。
範囲の設定方法は相対参照と絶対参照("=$A$1:$A$10"の様な記述)がありますが、基本的には絶対参照で行います。(ただし当方の環境では通常の絶対参照記述ではエラーになったのでR1C1形式表記にしてあります)
●基本的なコード例(範囲の利用)適用範囲:Range("a3:a13") 範囲:=Sheet1!R3C8:R8C8
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="=Sheet1!R3C8:R8C8" '
End With
With Range("a3:a13").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlEqual, Formula1:="=Sheet1!R3C8:R8C8" '
End With
以下、そのコードです。
範囲による入力規制(ダウンロード)
以上の操作を踏まえて、まとめたものを下記のファイルにしています。
以上のTIPSをまとめたファイルです。お時間の無い方におまとめ編です。
3とおりの設定方法を選んで、コードの違いを見られます。
