- ベストアンサー
オブジェクトを変数名で使用したいのですが
初めまして。 AccessのVBAを使用しているのですが、 コマンドボタンを10個用意して、 名前をそれぞれ1~10にしたのですが、 それらを繰り返し処理をしたいのですが、どうしたらいいですか? 例えば、 for i = 1 To 10 i.enabled = True Next i という風にしたかったのですが、 できないんです。 助けてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Access の VBA の事を何も知らないので、外しているかも知れません。 VBでは、コントロール配列にすると簡単できますが。 コマンドボタンの名前は全部 Command1 となります。 ひとつひとつは、Command1(1),Command1(2)・・・・Command1(10) となります。 for i=1 to 10 Command1(i).Enabled=true next i VBA にコントロール配列と言う考え方がなかったら、ごめんなさい。
その他の回答 (3)
- ARC
- ベストアンサー率46% (643/1383)
For i = 1 to 10 Me.Controls(CStr(i)).Enabled=True Next i ですね。 「ボタン1」~「ボタン10」ってな名前が付いている場合は、 For i = 1 to 10 Me.Controls("ボタン" & i).Enabled=True Next i になります。 尚、Accessにはコントロール配列はありません。
- Yackn
- ベストアンサー率42% (12/28)
フォームのオブジェクトを列挙してその名前によって買えてあげればいいと思います。(コントロール配列がないので) 適当にボタンを貼り付けてから、cmdEnableという名前のボタンを作成してコードビルダに下記のコードを貼り付けてください。 アクセス97で確認しましたが動くようです。 Private Sub cmdEnable_Click() Dim com As Control For Each com In Me If com.Name Like "コマンド*" Then com.Enabled = False End If Next End Sub
- tinu 2000(@tinu2000)
- ベストアンサー率40% (147/366)
> オブジェクトを変数名で使用したいのですが タイトルを見落していました。 外しました(^。^;)、すみません。
お礼
できました!! ありがとうございました! for i = to 27 if me.control(i).name=i then 処理 end if で、オブジェクトの名前と一致したら・・・ということができました! 有難うございました!