例えば、コンボボックスでオブジェクト名が「コンボ1」「コンボ2」「コンボ3」の3つがあったとします。
全てのコンボボックスに「10」「45」「92」のリストを入れたいとき、
With コンボ1
.Additem 10
.Additem 45
.Additem 92
End With
というように「コンボ2」「コンボ3」も同じようにコードを書いてるのですが、コードを少なくする方法を教えてください。
もう一つ、オブジェクト名に「(*)」(*は数字)を含んだ名前を作ることがなぜできないのでしょうか?
回答よろしくお願いします。
No.3ベストアンサー
- 回答日時:
>#1補足
>「v」は配列なので「Additem」は使えない
配列なので使えないというより、ComboBoxへのデータセット手段として
・AddItem メソッド
・List プロパティ
・RowSource プロパティ
があり、
1次元配列を準備してList プロパティを使えば1行ですよ、
その1次元配列もArray関数を使えば1行ですよ、...という話です。
合わせて、
Dim i As Long
For i = 1 To 3
Me.Controls("combobox" & i).List = Array(10, 45, 92)
Next i
も可ですが、同じ関数を3回繰り返したくなかっただけです。
(コード少量化=効率化...とは限らないと思いますので)
>データ型を宣言するときに「Variant」以外はできない
Array 関数が返す型がVariant型配列なので、その通りだと思います。
別に、
Dim v(2) As Long
v(0) = 10
v(1) = 45
v(2) = 92
としてもできますが、だったら、記述的にはAdditemでも良いわけです。
>1次元配列を準備してList プロパティを使えば1行ですよ、
その1次元配列もArray関数を使えば1行ですよ、...という話です。
なるほど。よく分かりました。
ありがとうございました。
No.2
- 回答日時:
ワークシートに値のリストを作成してRowSourceプロパティで設定する
とか
sub setx(obj as combobox)
with obj
end with
end sub
みたいにコンボボックスを引数にとる関数・プロシジャを使って設定する
()が駄目なのは、配列と区別できなくなるからでしょう?
多分
今回は、ワークシートにリストを作ってコンボボックスに追加するなどの方法は考えていませんでしたが、そういう方法もあるんですね。
ありがとうございました。
No.1
- 回答日時:
こんにちは。
Dim i As Long
Dim v
v = Array(10, 45, 92)
For i = 1 To 3
Me.Controls("コンボ" & i).List = v
Next i
こんな感じで、Control名 & x でLoopさせれば良いです。
ですのでControlはデフォルトか、連番で名前付けしておくと楽ですね。
>「(*)」(*は数字)を含んだ名前
については詳しくないのでうまく説明できないですが、他にも1文字目は数値不可とか、
メタキャラクタ(?)な文字は使えないとか、制限があるのではないでしょうか。
またComboBox名は実際も"コンボ"ですか?
「Visual Basic でプロジェクト名に日本語の文字を使用できない」
http://support.microsoft.com/kb/418924/ja
『予期しない動作をすることがあります』との記事もありますので、留意されたほうが良いかと。
この回答への補足
回答ありがとうございます。
なるほど。コントロールを連番にして、プログラムではリストに追加したい配列を作ってコントロールの数だけリストを追加していくわけですね。
「v」は配列なので「Additem」は使えないのは分かりましたが、「v」に代入されるのは数値(正確には数値の配列)ですが、データ型を宣言するときに「Variant」以外はできないということですか?これもやはり、配列だからでしょうか?
「()」は名前を付けるときに制限があるんですね。
コントロールなどの名前に日本語を使わない方がいいんですね。今までは、なんとなく日本語の方が分かりやすいので使っていました。
これから気をつけたいと思います。
大変申し訳ありませんがもう一度回答よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) VBAユーザーフォームの複数のコンボボックスについて。 1 2022/04/25 08:13
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- オンラインゲーム スマブラってコンボとか覚えなくても楽しいですか? なんかめんどくさそうで 1 2023/08/16 12:32
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
特定のセル範囲で4文字以上入力...
-
for each の現在の配列ポインタ...
-
2つ以上の変数を比較して最大数...
-
2次元動的配列の第一引数のみを...
-
ListViewで、非表示列って作れ...
-
VB6 配列を初期化したい
-
Excel VBA配列をFunctionに渡す
-
Excel-VBAの配列「Public Const...
-
VBのFunctionで、配列を引数...
-
行列の積の計算プログラムを教...
-
Dim は何の略ですか?
-
《エクセル2000》A列・B列の商...
-
配列変数の添字が範囲外ですと...
-
MATLABにて場合分け関数を定義...
-
subの配列引数をoptionalで使う...
-
verilogで配列の任意の8bitを取...
-
エクセルで最小値から0を除く方法
-
配列を任意の数値で埋める方法
-
FORTRANのCOMMON文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
特定のセル範囲で4文字以上入力...
-
配列変数の添字が範囲外ですと...
-
ListViewで、非表示列って作れ...
-
VBA 1次元配列を2次元に追加する
-
VB6 配列を初期化したい
-
subの配列引数をoptionalで使う...
-
配列を任意の数値で埋める方法
-
for each の現在の配列ポインタ...
-
エクセルで最小値から0を除く方法
-
2次元動的配列の第一引数のみを...
-
VBのFunctionで、配列を引数...
-
Excel-VBAの配列「Public Const...
-
《エクセル2000》A列・B列の商...
-
linest関数に配列を渡す
-
VBAで近似曲線の係数取得
-
配列内の内容を全て表示する方法
-
Excel VBA配列をFunctionに渡す
-
AES暗号にて、AES_set_encrypt_...
おすすめ情報