
皆様、こんにちは。
いつもお世話になっております。
条件によってコンボボックスの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で質問しましょう!
似たような質問が見つかりました
- 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も見ています
-
コンボボックスの参照先(ListFillRange)が反映されない
Excel(エクセル)
-
Excel VBA コンボボックスで空白を削除
その他(Microsoft Office)
-
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
-
4
UserForm1.Showでエラーになります。
工学
-
5
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
6
[エクセルVBA] コンボボックスのリストの更新方法について
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
エクセルVBAでコンボボックスの非表示について
iOS
-
9
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
10
Excel VBA:ComboBoxのドロップダウンリストで文字が欠ける
Excel(エクセル)
-
11
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
12
EXCELのコンボボックス 配置の縦位置の変更はどうすれば?
Windows Vista・XP
-
13
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
14
EXCEL リストボックスのRowSouce欄が表示されない
Excel(エクセル)
-
15
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
16
エクセルマクロで特定の範囲が空白という条件
Excel(エクセル)
-
17
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
18
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
19
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルのVBAで集計をしたい
-
【画像あり】オートフィルター...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
Office2021のエクセルで米国株...
-
エクセルの関数について
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】【配列】3つのシー...
-
他のシートの検索
-
【マクロ】オートフィルターの...
-
ページが変なふうに切れる
-
【マクロ】列を折りたたみ非表...
-
【関数】同じ関数なのに、エラ...
-
【条件付き書式】シートの中で...
-
【エクセル】期限アラートについて
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報