• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel vba でドロップダウンリスト)

Excel VBAでドロップダウンリストを作成する方法

このQ&Aのポイント
  • ExcelのVBAを使用して、シート1のA1セルにドロップダウンリストを作成する方法についてアドバイスをお願いします。
  • ドロップダウンリストの元のデータは、シート「datalist」のA1セルからA10セルにあります。
  • 参考書を参考にしながら以下のコードを作成しましたが、うまく動作しません。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

たとえばこんな具合に。 sub macro1()  dim a as variant  a = application.transpose(worksheets("datalist").range("A1:A10"))  with worksheets("シート名").range("A1").validation   .delete   .add type:=xlvalidatelist, formula1:=join(a, ",")  end with end sub #入力規則のリストのネタに他のシートのセル範囲を使うのは,マクロ以前に手動で行ってみてもふつーの(ご質問のマクロでやってみようとしたような)やり方では出来ません。

puyopa
質問者

お礼

回答ありがとうございます。いつもありがとうございます。 私はなんとか断片的にコードを理解するのが精一杯ですが、このようにコードを自分で記載されることが出来るのがすごいです。 少しずつですが、勉強になっております。ありがとうございました。

その他の回答 (2)

回答No.3

マクロの自動記録から編集してみました Sub Macro2()     '名前の定義     ActiveWorkbook.Names.Add Name:="リスト1", RefersTo:="=datalist!$A$1:$A$10"     '入力規則のリストに定義した名前を張り付ける     With Worksheets("Sheet1").Range("A1").Validation          .Delete          .Add Type:=xlValidateList, Formula1:="=リスト1"     End With End Sub

puyopa
質問者

お礼

回答ありがとうございました。 マクロで作るという発想をすっかりと忘れていました。 勉強になりました、ありがとうございます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 formula1の引数を変更して下さい。 For文を使用しているのならばセル範囲ではないのか。 Sub Macro1() For Each r In Range("a1:a10") With r.Validation .Delete .Add Type:=xlValidateList, Formula1:="=datalist!a1:a10" End With Next End Sub

puyopa
質問者

お礼

回答ありがとうございます。 いろんなコードが記載できるバリエーションを持つべく、勉強になりました。

関連するQ&A

専門家に質問してみよう