最近VBAからVB2005に移行した初心者なんですが
複数のComboBoxのselectedindexをcontrolsで一括処理したいのですが
やり方が分かりません。
VBAなら
for i=1 to 10
me.controls("ComboBox" & i).listindex =1
next i
で出来るんですが、VB2005で
for i=1 to 10
me.controls("ComboBox" & i).selectedindex =1
next i
と記述すると"selectedindex は controlのメンバではありません"
というエラーが出ます。
VB自体をまだよく理解していない初心者ですので
どなたか分かり易く教えていただけないですか?
よろしくいお願いします。
アクアと申します。よろしくお願いいたします。
さて、ご質問の件ですが、Controlクラスのメンバ一覧にselectedindexというメンバが存在しないからです。
メンバというのは主にプロパティ、メソッド、イベント等を指し、動きなどを制御する項目と理解していいのではないかと思います。
その項目にselectindexは存在していないのです。
VB2005のヘルプで「Control クラス」を選択するとメンバの一覧が表示されますので確認できます。
でも、聞きたいのはエラーメッセージの内容ではないのでしょう?
私はVBAは詳しくないのですが、それでもコントロールの名前(VBAでいうCaptionプロパティ?)から、ComboBoxの指定された項の値を呼び出したいように思えましたが如何でしょうか?
訂正
誤:その項目にselectindexは存在していないのです。
正:その項目にselectedindexは存在していないのです。
> me.controls("ComboBox" & i).selectedindex =1
> と記述すると"selectedindex は controlのメンバではありません"
> というエラーが出ます。
型変換をして見ては?
> CType(Me.Controls("ComboBox" & i), ComboBox).SelectedIndex = 1
大吉末吉さん
私の場合、ComboBoxを配列にいれる方法かな。
↑不細工だけど簡単。
もちろん型変換も考えてはみましたが…。
↑ちょっと理解を得るには難しいかもしれません。
>大吉末吉さん
出来ました!ありがとうございました。
型変換について勉強してみます。
>アクアさん
いろいろ分かり易く教えていただいてありがとうございます。
出来れば、配列に入れる方法も教えていただけませんか?
よろしくお願いします。
大吉末吉さん ご挨拶が遅れてしまったようです。すみませんでした。
アクアと申します。 いつも、参考にさせてもらってます。どうぞ宜しくお願い致します。
higeさん
VB2005 WindowsXP Home----------------------------------------------
' コンボボックスコントロールを格納する変数を宣言
Dim ctrComboBox() As ComboBox = _
{ComboBox1, ComboBox2, ComboBox3, ComboBox4, ComboBox5, _
ComboBox6, ComboBox7, ComboBox8, ComboBox9, ComboBox10}
For i As Integer = 0 To ctrComboBox.Length - 1
' それぞれ10個のコンボボックスの2番目の値を表示
ctrComboBox(i).Text = ctrComboBox(i).Items(1).ToString()
Next
-------------------------------------------------------------------
# 私事ですが、サンプル記述している時に、他の方の同じようなコードを発見し!少しほっとしました。^^
できればで結構ですが、higeさんの私もコードが見てみたいです。
>アクアさん
ありがとうございます。この様なやり方もあるんですね。
大変、勉強になりました。
私のコード件なんですが、まだ人様にお見せできる様なものでは
ありませんので・・・・・・
また分からない事が出てきた時は、よろしくお願いします。
ありがとうございました。
ツイート | ![]() |