皆様、こんにちは。
いつもお世話になっております。
条件によってコンボボックスの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.1
- 回答日時:
こんにちは。
名前が"DropDown63"で間違いないのなら、
ActiveSheet.DropDowns("DropDown63").ListFillRange = "$C$44:$C$54"
としてみてはどうでしょう。
この回答への補足
masa_019様、返事をどうもありがとうございました。教えていただいたようにやってみましたが、「WorksheetクラスのDropDownsプロパティを取得できません」というメッセージがでます。
それと、コンボボックスの名前を確認する方法を教えていただけないでしょうか?私はフォームのメニューにある「コードの編集」というところをクリックし、出てきたSubの名前を使っただけですので、間違っているような気がします。。
No.2
- 回答日時:
コンボボックスを選択した状態で、
イミディエイトに、
? selection.name
と記述してEnterで名前がわかります。
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のことなどを含めて、大変勉強になりました。
教えていただいた本を購入して積極的に勉強しようと思っております。
今後ともどうぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel コンボボックス バックカラー 1 2023/02/18 08:06
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) ExcelのVBAコードについて教えて下さい。 2 2022/06/25 14:04
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
コンボボックスの参照先(ListFillRange)が反映されない
Excel(エクセル)
-
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
EXCEL リストボックスのRowSouce欄が表示されない
Excel(エクセル)
-
-
4
コンボボックスのリストのテーブルからの直接取得の方法
Visual Basic(VBA)
-
5
EXCELのコンボボックス 配置の縦位置の変更はどうすれば?
Windows Vista・XP
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
Excel コンボボックスの値参照
Excel(エクセル)
-
8
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
9
エクセルのチェックボックスを保護対象から外すには
Windows Vista・XP
-
10
ExcelのComboboxでマウスのスクロールを有効にしたい
Excel(エクセル)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
13
EXCEL VBAで、PasteSpecialと Destinationの組み合わせ方法?
Excel(エクセル)
-
14
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
15
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
16
コンボボックスのインデックスが不正
Visual Basic(VBA)
-
17
VBAで先月、先々月を求める方法
Visual Basic(VBA)
-
18
ドロップダウンリストのフォントサイズを大きくするには?
Excel(エクセル)
-
19
ExcelVBAでのプロジェクトのロックの解除の方法
Excel(エクセル)
-
20
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報