アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

「excel vba でドロップダウンリス」の質問画像

A 回答 (3件)

たとえばこんな具合に。



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


#入力規則のリストのネタに他のシートのセル範囲を使うのは,マクロ以前に手動で行ってみてもふつーの(ご質問のマクロでやってみようとしたような)やり方では出来ません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。いつもありがとうございます。

私はなんとか断片的にコードを理解するのが精一杯ですが、このようにコードを自分で記載されることが出来るのがすごいです。

少しずつですが、勉強になっております。ありがとうございました。

お礼日時:2011/08/27 22:03

一例です。


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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

お礼日時:2011/08/27 22:04

マクロの自動記録から編集してみました


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
    • good
    • 1
この回答へのお礼

回答ありがとうございました。

マクロで作るという発想をすっかりと忘れていました。

勉強になりました、ありがとうございます。

お礼日時:2011/08/27 22:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!