電子書籍の厳選無料作品が豊富!

ExcelVBA(Excel2002)でツールを作成しています。

そこで、チェックボックスを使っているのですが、処理をするにあたり、VisualBasicのチェックボックスのプロパティにあるindexのようなものを使いたいのです。

VBAのプロパティにはindexという名前ではなかったのですが、何か、変わりになるものはありませんでしょうか。

A 回答 (2件)

こんばんは。



VBのコントロール配列のことをおっしゃっているのでしょうか?
本来、以下のような使い方はあまりしませんが、このようにして、Index を入れて、配列にすることが可能です。他にも、クラスモジュールに作ってやる方法もありますが、どちらも、あまり使われないような気がします。
その理由は、単に、Me.Controls("CheckBox" & i) をループしてあげれば済むからなのだと思います。


Dim myChkBoxes As Collection

Private Sub CommandButton1_Click()
 For i = 1 To myChkBoxes.Count
  If myChkBoxes(i).Value = True Then
    MsgBox i
  End If
 Next
End Sub

Private Sub UserForm_Initialize()
Set myChkBoxes = New Collection
For i = 1 To 10
myChkBoxes.Add Controls("CheckBox" & i)
Next
End Sub
    • good
    • 0

エクセル、アクセスVBAには、今のところMS社は、コントロール配列を認めていません。


しかし便法で下記ができます。
フォームに3つラベルを貼り付けると、Label1,Label2,Label3と命名されます。
ラベルのCaptionをそれぞれ変えて
Private Sub UserForm_Click()
For i = 1 To 3
MsgBox Controls("Label" & i).Caption
Next i
End Sub
を実験すればわかります。
かってから似た質問は時々あります。
http://okweb.jp/kotaeru.php3?q=1383448
http://okweb.jp/kotaeru.php3?q=355144
など。
後者の私の回答はVBと勘違いしていて、誤りです。すみません。
このOKWEBで「VBA コントロール配列」で照会してみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!