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

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

excel vba でドロップダウンリスト

sheet1のA1セルに、VBAでドロップダウンリストを作ろうとしているが、うまくいかず、どうかアドバイスをお願い致します。 ドロップダウンリストの元のデータは「datalist」というシートののA1セル~A10セルにあります。 参考書を参考にしながら、下記コードを作成しました。 Sub ドロップダウンリストの作成() Dim r As Variant For Each r In Range("A1") r.Validation.Add_ Type:=xlValidateList, _ formula1:="Worksheets("datalist")."=$A$1:$A$10" Next r End Sub

  • puyopa
  • お礼率87% (459/525)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答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

  • エクセルのドロップダウンリスト

    エクセルのドロップダウンリストについて、困っていることがあります。 たとえば、 ・Aシート A列|B列|C列 1|ペン|200 2|鉛筆|100 3|本|200 ・Bシート A列|B列 ペン(ドロップダウンリスト)|200 という風に、Bシートのドロップダウンリストを選択すると、動的に200と隣のセル(B列)に表示するようにするにはどのようにすればいいでしょうか? よろしくお願いします。

  • Excelのドロップダウンリスト

    Excelでシートを作成しており、ドロップダウンリストにて、データを選べるようにしました。 セルごとに選ぶリストが違うため、Excelのファイルサイズが大きくなってしまいました。 リストのみ別シートで作成し、連動?することはできますでしょうか? リストは別シートに作成してあり、それが10以上になっています。 何かいい方法がありましたら、教えて頂ければと思います。

  • エクセルでドロップダウンリストを…

    エクセルでドロップダウンリストを使用する場合の質問です。 あるセルに入力した文字列によって、ドロップダウンリストで選択できる範囲を限定するような設定は可能でしょうか。 例) セルA1に「花」と入力したら     セルA2にドロップダウンリストで    セルE1~E4の「ひまわり、バラ、すみれ、チューリップ」を    選択できるようにし、    セルA1に「野菜」と入力したら、    セルA2にドロップダウンリストで    セルE5~E8の「トマト、なす、きゅうり、にんじん」を    選択できるようにする。 初歩的質問ですみませんが、よろしくお願いします。

  • エクセルでドロップダウンリストのリスト以外の文字も、入れられるようにし

    エクセルでドロップダウンリストのリスト以外の文字も、入れられるようにしたいのですが、それができません。 頻度の高いものはドロップダウンリストから、それ以外は手入力で入れられるように、あるセルを設定したいのですが、リスト以外のものは入力が受け付けられません。 何かやりかたが間違っているのでしょうか。 入力が簡単なように、ドロップダウンリストを作成して貼り付けました。具体的には、別のセルに項目を並べて、データ→データツール→入力規制→リスト、、、で作ったものを入力したいところに貼り付けてつくりました。 エクセル 2000 2007です。

  • エクセルのドロップダウンリストについて(再)

    ドロップダウンリストで、参照先のリストは、単一の行、もしくは列でないといけないともいますが、たとえば、A1列にあらかじめ設定されたドロップダウンリストを表示(※ドロップダウンリストの右隣の▼ボタンを押したときに表示される内容です。)させたときに、A0001などのリストの隣、もしくは下にそれに対応する商品名を表示させるにはどうしたらいいのでしょうか? 先程やっていたら偶然にできたのですが、しばらくしたら更新されやり方が分からなくなりました。

  • エクセルのドロップダウンリスト

    入力規則のドロップダウンリストですが、次のような使い方は可能でしょうか?また可能なら方法を教えて頂けませんか?よろしくお願いします。 A、B列にドロップダウンリストを設定し、A列のリストに値を複数設定し、B列のリストの値をA列の値によって変化させたいのですが・・・。各列とも、複数行にわたってドロップダウンリストを設定しています。

  • VBA セルにドロップダウンリスト 作成

    Access VBAについてお尋ねいたします。 Access VBA にてExcelファイルを操作するプログラムを作成しています。 Excelの指定した範囲のセルにドロップダウンリストを作成しようとしてコードを入力したらエラーが発生しました。 エラー内容:実行時エラー'1004'アプリケーション定義かオブジェクト定義エラーです エラーとなった処理コード Dim Exf as string Dim AppObj As Object 'Excel.Applicationオブジェクトの宣言 Dim WBObj As Object 'Excel.Workbookオブジェクトの宣言 Dim WsObj As Object 'Excel.WorkSheetオブジェクトの宣言 '実行時バインディング Set AppObj = CreateObject("Excel.Application") '編集を実施するワークブックを開く Set WBObj = AppObj.WorkBooks.Open(Path & Exf) '編集を実施するワークシートを設定する Set WsObj = WBObj.Worksheets(1) 'Excelアプリケーションを表示する AppObj.Visible = True col = 5:Count(i) = 15 '2行目からデータが存在する最後の行までドロップダウンリストを作成する With WsObj.Range(WsObj.cells(2, Col), WsObj.cells(Count(i) + 1, Col)).Validation .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Formula1:=Join(Li, ",") End With 処理の解説 1:Accessと同じファイルパス内のExcelファイルを開く 2:先頭のシートにて処理を実行する 3:E列の2行目からデータがある最後の行までをドロップダウンリスト化する 4:ドロップダウンリストにするデータは各Excelファイルの先頭から2番目のシートのA列にデータがあり、Liという配列に格納してあります。 ※A列のデータの範囲【行数】が処理するたびに異なるため、Liという配列を使用し、配列の全データをドロップダウンリスト化するという方法を採用いたしました。 エラーの修正方法がお分かりの方がいらっしゃいましたら回答のほどよろしくお願いいたします。

  • エクセル2007 ドロップダウンリスト

    vista利用の初心者です。 よろしくお願いします。 ドロップダウンリストで選択した後(後という表現が適切かどうかわかりませんが)の 計算式をご存じの方は教えてください。 たとえば  A1に5と入力しておきます。 B1にドロップダウンリストで あ50,い60,う65と設定しておきます。 C1には ドロップダウンリストであ50を選択した場合は A1の5×50の数値 い60選択で 5×60 ・・・の数値を設定したいと思っています。 どなたか詳しい方、よろしくお願い申し上げます。

  • エクセルでドロップダウンリストを使いたい

    こんにちは。 エクセルでのデータの入力にドロップダウンリストを使いたいのですが 方法がわからないので教えてください。 やりたいことは以下のとおりです。 ・ドロップダウンリストは初めから表示する。  (クリックしたら表示されるのではだめ) ・ドロップダウンリストの選択項目はセル参照でも  直接入力でもどちらでもよい。 クリックしたら表示される方法はなんとかわかったのですが、 初めから表示しておくやり方がわからないです。 よろしくおねがいいたします。

  • エクセルでのドロップダウンリスト作成について

    エクセルで、3つの項目(A,B,Cとします)をドロップダウンリストから選択する場合、A,B,Cを『名前の定義』で関連付けることはできました。しかし、A,B,Cが同じ文字列の場合、同シート上で同じ名前の定義にできないため、ドロップダウンリストが作成できずにいます。 このようなドロップダウンリストを作成するにはどのようにすれば良いか教えてください。 VBAなどが必要になるのでしょうか? 宜しくお願いします。

専門家に質問してみよう