Excelの設定からのプルダウンリスト作成のやり方はわかっていたのですが、VBAからプルダウンリストを設定(作成)する場合にはどうするんだという状態だったので備忘録として残しておきます。
目次
1.プルダウンリスト作成方法
VBAからプルダウンリストを作成するコードの記載内容は以下のようになります。
Rangeオブジェクト.Add(Type,Alertstyle,Operator,Formula1,Formula2)
ここで、それぞれのパラメータの内容は以下のようです。
パラメータ | 必須/省略可能 | 説明 |
---|---|---|
Type | 必 須 | 入力規則の種類を指定 |
Alertstyle | 省略可能 | 入力規則でのエラースタイルを指定 |
Operator | 省略可能 | データ入力規則の演算子を指定 |
Formula1 | 省略可能 |
データ入力規則での条件式の最初の部分を指定 値は 255 文字を超える事はできない |
Formula2 | 省略可能 |
引数_Operator_がXlbetweenまたはxlnotbetweenの場合、データ入力規則の2番目の部分を指定 それ以外の場合、この引数は無視 |
2.プルダウンリスト作成コード記載例
コードの記載例としてはたとえば以下のようなものになります。
プルダウンメニューの選択のもとになるデータは固定で「いちご」、「みかん」、「ぶどう」を入れています。
その選択内容で(2,1)~(11,1)にプルダウンリストを作成することとしています。
Range(Cells(2, 1), Cells(11, 1)).Select With Selection.Validation .Add Type:=xlValidateList, _ Formula1:="いちご,みかん,ぶどう" End With
もう1つのプルダウンリストの作成例は以下のようです。
今度は、プルダウンリストの選択のもとになるデータはExcel上に配置してExcel上で変更可能となるようにしています。
この例では選択データは別シートsheet2のB3~B4に配置し、それを元に本シートの(2,1)~(11,1)にプルダウンリストを作成することとしています。
Range(Cells(2, 1), Cells(11, 1)).Select With Selection.Validation .Add Type:=xlValidateList, _ Formula1:="=sheet2!$B$3:$B$4" End With
この例で、1つだけ気になったのは、Excelのセル表記の形式がA1形式(列番号がアルファベット)の時は問題なかったのですが、R1C1形式(列番号が数値)の場合で実行すると「$B$3:$B$4」のところがエラーになりました。
その場合は、以下のように記載するとエラーにならずに実行できました。
Range(Cells(2, 1), Cells(11, 1)).Select With Selection.Validation .Add Type:=xlValidateList, _ Formula1:="=sheet2!R3C2:R4C2" End With
ただし、そうするとプルダウンリスト作成前にセルの表示形式を見てから記載内容を変更するような処理を加えなければならなくなると思います。
これがちょっと面倒かと思ったので、今回は以下のような処理を先頭に加えました。
特に問題なければということになるかもしれませんが、VBAの先頭で以下のようにA1方式に設定してから実行するということで最終的には対応しました。
'Excelの列番号表示形式設定:A1形式 Application.ReferenceStyle = xlA1
関連記事:
【Excel VBA 文字列変換】大文字小文字変換方法、全角半角変換方法 - Django Girls and Boys 備忘録
【Excel VBA】文字列比較演算子「like」の使用方法 - Django Girls and Boys 備忘録
【Excel VBA】ファイル一覧やファイル有無確認に使われるDir()の使用方法 - Django Girls and Boys 備忘録
【Excel】プルダウンリストの設定方法 - Django Girls and Boys 備忘録
【Excel VBA】プルダウンリスト(ドロップダウンリスト)作成方法とセル表示形式(R1C1形式)でエラーになった時の対処方法 - Django Girls and Boys 備忘録
【Excel VBA】行の高さの取得、調整、自動調整をする方法 - Django Girls and Boys 備忘録
【Excel VBA】セル参照形式をVBAから変更する方法(A1形式、R1C1形式) - Django Girls and Boys 備忘録
【Excel VBA】改行コード(CR、LF、CRLF)の使用方法 - Django Girls and Boys 備忘録
【Excel VBA】ソースコードの改行方法 - Django Girls and Boys 備忘録
【Excel】の「開発」タブを表示させる方法 - Django Girls and Boys 備忘録
【Excel】ボタンの表示文字を改行する方法 - Django Girls and Boys 備忘録
【Excel】プルダウンリスト 設定方法、元データ追加方法、元データ変更方法 - Django Girls and Boys 備忘録
【Excel VBA】結合セルのコピー方法について - Django Girls and Boys 備忘録
【Excel VBA】あるシートのセル範囲に変更があった時に処理を実行する方法 - Django Girls and Boys 備忘録
【Googleサーチコンソール Googleアナリティクスの登録方法】サイト作成後の分析、活用に欠かせない登録 - Django Girls and Boys 備忘録
【Excel 名前の定義】「名前"○○○"は既に存在します。この名前にする・・・」のメッセージ表示を解決する方法 - Django Girls and Boys 備忘録
【Excel マクロ(VBA) 行削除】条件を満たした行を削除する方法(For~Next文を使用) - Django Girls and Boys 備忘録
【Excel マクロ(VBA)】最大行番号、最大列番号を取得する方法 - Django Girls and Boys 備忘録
【ExcelマクロからのI.E.操作】I.E.のセキュリティに絡むエラー(オートメーションエラー)発生時の対応方法 - Django Girls and Boys 備忘録
【Python Excel】ExcelからのPython実行ファイル(アプリケーションファイル)起動方法 - Django Girls and Boys 備忘録
【Excel VBA】シート削除時などに確認メッセージを表示しない方法 - Django Girls and Boys 備忘録
【Excel】数式の計算方法について、計算方法の自動/手動変更方法 - Django Girls and Boys 備忘録
【Excel VBA】シートをPDF形式で保存する方法 - Django Girls and Boys 備忘録