皆様、こんにちは。
いつもお世話になっております。
条件によってコンボボックスのListFillRangeを変更させたいですが、可能でしょうか?
次のように書いてみましたが、動きません。。
If Range("D2") = 1 Then
ActiveSheet.Shapes("DropDown63").ListFillRange = "$C$44:$C$54"
ElseIf Range("D2") = 2 Then
ActiveSheet.Shapes("DropDown63").ListFillRange = "$C$55:$C$73"
End If
「指定した名前のアイテムが見つかりませんでした」というメッセージが出てしまうんですが、コンボボックスの名前の書き方が間違っているでしょうか?
ご存知でしたら何方か教えていただければ非常に助かります!
どうぞよろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんばんは。
その辺りは、きちんと、人に教えてもらわないと難しいですね。
今は、もうここら辺りの説明は本には出ていません。Ver.5 のマニュアルに書かれていますが、書籍は、手に入らないと思います。
"DropDown63" この名前は記録マクロからだと思いますが、確かですか?
補足情報から書くと、#1 さんの使っている、DropDowns は、隠しオブジェクトと言われています。これは、Ver.5 の書き方です。いろんな書き方がありますが、私は、この DropDowns にIndex で書く方法が間違いが少ないと思います。
"DropDown63" 名前の、63ですが、このドロップダウンが63個もあるでしょうか。
最初に、分かりやすい書き方としては、別途、
ActiveSheet.DropDowns("ドロップ 1").Select
という書き方があります。ただ、名前ボックス(ワークシートの左上端)に出ている名前を正確に入れます。
ドロップ 1 (半角の数字の前は半角のスペース)
ドロップ 63 ということになります。
「Shapes コレクション」にすると、
ActiveSheet.Shapes("Drop Down 63").DrawingObject.ListFillRange = "C44:C54" (絶対参照でなくても良い)
自動的に入れたものは、こんなスタイルになるはずです。
この方法でも可能なはずです。(半角空白を守ってください)
ActiveSheet.Shapes("ドロップ 63").DrawingObject.ListFillRange = "C44:C54"
これは、Office 2000からの書き方ともいえるのですが、もともと、ドロップダウンなどは、フォームツール、Ver.5 のものですから、その方法で書いた方法がよいです。Office 2000以降は、コントロールツールを使うのが推奨されています。
しかし、私は、こんな方法で書いています。
順序良く並んでいるものとすると、名前は何であれ、作られた順に、
1番目は、Index が 1になります。
ActiveSheet.DropDowns(1).Select
「1」から順番にIndex が付きますから、途中で削除しても、順位が繰り上がるだけです。
ActiveSheet.DropDowns(1).ListFillRange = "C44:C54"
いろいろ研究してみてください。フォームツールは、マクロで設定するときに便利です。
この回答への補足
Wendy02様、ご親切に教えていただき本当にありがとうございました。
ドロップダウンの名前が確認でき(ドロップ 63でした)、
ActiveSheet.Shapes("ドロップ 63").DrawingObject.ListFillRange = "C44:C54"
の方法で書いたら確かに動きました!!
もう一つ教えていただいたIndexの方法なんですが、
>作られた順に、1番目は、Index が 1になります。
と書いてありますが、ドロップダウンが作られた順番のことでしょうか?この場合は、Indexは63になるでしょうか?
"DropDown63" 名前の、63については、63個もありません。前に作ったり消したりしたものから順番に数えられているでしょうか?もしそうであれば、これを中止させる方法がありますでしょうか?
それと、もとの質問と関係がありませんが、初心者向けのVBAの分かりやすい教科書等をご存知でしたら、教えていただけないでしょうか?
色々聞いてしまって申し訳ありませんが、
どうぞよろしくお願いいたします。
No.4
- 回答日時:
こんにちは。
正直な話、私は、最初のころ、ここらは、さっぱり分からなかったです。誰かに教われば、覚えるのは早かったのですが、あまり詳しい人は少ないようです。フォームツールは、最終的には、DialogSheet を扱うためのツールです。DialogSheet は、シートの挿入で出てくるシートのひとつです。
>ドロップダウンが作られた順番のことでしょうか?
>これを中止させる方法がありますでしょうか?
これは、止める方法がないので、シートを新しくするしかないそうです。名前自体は、変えれば分かりませんが、"ドロップ 63"とかの63というのは、作っていった順番の数でも、そのオブジェクトを削除しても、その(内部的)数は、どんどん増えていくのです。この63の上限は、論理的には、100万を越える数まで可能のようですが、実際、1,000を越える頃から、ワークシートが変な状態になるような気がします。ワークシートの中に、このカウントの記録が残っています。(確認はOffice 2003 までです)
Index 側は、削除すると、繰り上げになります。
名前とインデックスの関係は、このマクロで分かります。
Sub FormCheckTest()
Dim o As Object
For Each o In ActiveSheet.DropDowns
MsgBox "Name : " & o.Name & vbCrLf & _
"Index: " & o.Index
Next o
End Sub
------------------------------------------
私は、Ver.5 マクロのMSのマニュアルは持っていますが、市販の本の方がわかりやすかったです。古本屋さんで見つけました。
Ver.5 のヘルプより
構文
object.DropDowns(index)
ドロップダウン リスト ボックス コントロールの名前またはインデックス番号を指定します (複数のコントロールを指定するには、配列を使います)。
構文
object.ListFillRange
Microsoft Excel では、指定したセル範囲に含まれる各セルの内容を読み込み、読み込んだ値をリスト ボックスに入力します。指定したセル範囲内のセルに加えられた変更は、リスト ボックスにも反映されます。
リスト ボックス内のリストの作成に AddItem メソッドが使われているとき、このプロパティは空の文字列 ("") を返します。
---------------------------------------------
初心者向けのVBAの分かりやすい教科書等
多くの人は、これで始めているようです。
『かんたんプログラミング Excel2003 VBA 基礎編』技術評論社 (2004/02)
大村 あつし (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4774119 …
または、
『かんたんプログラミング Excel 2007 VBA 基礎編』技術評論社
(2008/1/8)大村 あつし (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4774133 …
これは、三部作です。しかし、このシリーズの後に続く教科書が見当たらなくなってしまいました。
それから、Office のバージョンにによって、Windows Common Controls 6.0が使えるようになっていますが、この使い方を書いてあるマニュアルがありません。(VB6のマニュアルにはありますが、もはや手に入れにくいです。)
Wendy02様、ありがとうございました!
IndexやObjectのことなどを含めて、大変勉強になりました。
教えていただいた本を購入して積極的に勉強しようと思っております。
今後ともどうぞよろしくお願いいたします。
No.1
- 回答日時:
こんにちは。
名前が"DropDown63"で間違いないのなら、
ActiveSheet.DropDowns("DropDown63").ListFillRange = "$C$44:$C$54"
としてみてはどうでしょう。
この回答への補足
masa_019様、返事をどうもありがとうございました。教えていただいたようにやってみましたが、「WorksheetクラスのDropDownsプロパティを取得できません」というメッセージがでます。
それと、コンボボックスの名前を確認する方法を教えていただけないでしょうか?私はフォームのメニューにある「コードの編集」というところをクリックし、出てきたSubの名前を使っただけですので、間違っているような気がします。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
コンボボックスの参照先(ListFillRange)が反映されない
Excel(エクセル)
-
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
EXCEL リストボックスのRowSouce欄が表示されない
Excel(エクセル)
-
5
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
6
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
7
Excel VBA コンボボックスで空白を削除
その他(Microsoft Office)
-
8
オプションボタンの背景を透明にしたい
その他(Microsoft Office)
-
9
コンボボックスのインデックスが不正
Visual Basic(VBA)
-
10
Excel コンボボックスの値参照
Excel(エクセル)
-
11
コンボボックスのリストのテーブルからの直接取得の方法
Visual Basic(VBA)
-
12
【Excel VBA】コンボボックスで選択した値の取得
Excel(エクセル)
-
13
コンボボックス ▼ボタンをクリックしたらイベント
PowerPoint(パワーポイント)
-
14
UserForm1.Showでエラーになります。
工学
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
Vba アプリケーションが立ち上がるまで待つ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで80万行、50列位のデ...
-
ゼロを表示
-
Excelの計算が合いません。 諸...
-
Excelの警告について
-
今まで文字化けなく開けていたc...
-
EXCELの散布図で日付が1900年に...
-
エクセルでファイルの最終更新...
-
エクセルの数式バーのフォント...
-
作成した数式を値として表示し...
-
ExcelでASCを使って全角を半角...
-
Excelセルを跨いで合計を出す方法
-
Excel 大小比較演算子による「...
-
Excel関数について教えてくださ...
-
マクロの処理が遅くなった
-
エクセルで入力すると隣のセル...
-
Excel関数について教えてくださ...
-
エクセルの文字が途中から消える
-
エクセルを使用して、円周率を...
-
エクセルのセル内に分数などの...
-
条件付き書式設定で罫線を引き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報