アプリ版:「スタンプのみでお礼する」機能のリリースについて

EXCEL VBAのコード記載方法について教えていただきたいことがあります。

Sheets("Test")上にコントロールツールボックスのチェックボックスを
100個とコマンドボタンを1個配置する。
コマンドボタンをクリックすると、CheckBox1~100を全てTrueにする。
これを、
Private Sub CommandButton1_Click()
Sheets("Test").CheckBox1 = True
Sheets("Test").CheckBox2 = True



End Sub
と100回書くのではなく、配列化して記載することは可能なのでしょうか。
ユーザーフォームのチェックボックスであれば
Dim i As Integer
For i = 1 To 100
UserForm1.Controls("CheckBox" & i) = True
Next i
で出来ると思うのですが、シート上に埋め込むチェックボックスですと、どうにも上手く動いてくれません。
丁寧に全部書いていけばいいのですが、行が沢山増えてしまい見にくいのと、数字の書き間違いが出たりして作業が煩瑣なので、
可能であればまとめて処理してしまいたいと考えています。
どうぞよろしくお願いいたします。

A 回答 (4件)

#1です。


前の回答をして気付いたんですが、もっと簡単な方法がありました。

For i = 1 To 100
 OLEObjects("CheckBox" & i).Object.Value = True
Next i
    • good
    • 1
この回答へのお礼

おお!
やっぱり出来るんですね。知りませんでした。
どうもありがとうございました。
また何かありましたらよろしくお願いいたします。

お礼日時:2009/07/25 02:03

#1です。

回答が中途半端でしたね。

#2さんのコードを転用させてもらって、

If Left(Obj.Name, Len("checkbox")) = "CheckBox" Then
  Obj.Object.Value = True
End If
    • good
    • 0

#1の考え方なら


Sheet1での例
Sub test01()
Dim Obj As OLEObject
For Each Obj In Worksheets("Sheet1").OLEObjects
If Left(Obj.Name, Len("checkbox")) = "CheckBox" Then
MsgBox Obj.Name
End If
Next Obj
End Sub
Worksheets("Sheet1").を入れる。
If Left(Obj.Name・・でコマンドボタンを拾わないようにする。
MsgBox Obj.Name ここにチェックボックスをTrueにするコードを入れる。
しかしObj.Value=Trueが出来ないようだが、間違いかもしれないので考えます。
    • good
    • 0
この回答へのお礼

ありがとうございました。おかげさまで処理できました。
また何かありましたらよろしくお願いいたします。

お礼日時:2009/07/25 02:09

下記のコードでシート上の全コントロールを処理できます。



Dim Obj As OLEObject
For Each Obj In OLEObjects
・・・
Next Obj
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています