- ベストアンサー
CheckBoxの配列化
Excel2000のVBAで以下のような処理をしたいのでご教示願います。 Userform1にCheckBox1~CheckBox10の10個のチェックボックスがあったとして以下のようにFor文でまとめて処理したいのですがうまくいきません。 For I = 1 to 10 UserForm1.CheckBox(I).value = True NEXT
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
例えばこんな感じとか、、、 Private Sub CommandButton1_Click() Dim cb As Control For Each cb In Me.Controls If TypeName(cb) = "CheckBox" Then cb.Value = Not cb.Value End If Next cb End Sub
その他の回答 (4)
- gonic
- ベストアンサー率30% (18/59)
どうしても配列にしたければ、#1の方の要領で オブジェクト変数の配列にぶち込んじゃうとか。 Const cb_num = 10 Dim cb(cb_num) As Control Dim ctrl As Control Dim i As Integer i = 0 For Each ctrl In Me.Controls If TypeName(ctrl) = "CheckBox" Then i = i + 1 If i > cb_num Then Exit For Set cb(i) = ctrl End If Next ctrl For i = 1 To cb_num cb(i).Value = Not cb(i).Value Next i
お礼
ありがとうございました。 #1さんへのお礼にも書かせてもらったのですが、全てのチェックボックスだけでなく限定したチェックボックスにFor文で処理したいケースもあったので#5さんの方法でうまく解決できました。
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。#3に反応しちゃいました。 #3さんへ マルチポストに対するモーグの主張は理解出来ますが、より適切なコミュニティに誘導する行為だって、その場が終了する形であればマルチポストやネチケット違反にはならないと私は思います。 質問者 : ○○について知りたい ↓ 回答者 : その関連なら ××で聞くと良いよ。詳しい人が多いから。 ↓ 質問者 : [解決] 情報ありがとう、そちらで質問してみます。 これらを認めていないというのはモーグのマイルールで「モーグの掲示板」に書き込みする際のルールだと思います。(ある意味ではモーグで解決不可な場合を想定していないとも言えますね) モーグのマイルールが他のサイトの運営を抑制出来るものでは無いと思いますが、如何でしょう?
- marbin
- ベストアンサー率27% (636/2290)
お~っと、モーグ は他のコミュニテイサイト の紹介はサイト規約違反ですよ。 逆もまた真なり?
- hana-hana3
- ベストアンサー率31% (4940/15541)
VBAでは対応していないので、工夫が必要です。 下記を参考にしてください。
お礼
ありがとうございました。 この方法で質問した内容の処理ができることは確認できました。 この方法はすべてのチェックボックスが対象になってしまうのですね。 当方の質問の仕方が悪かったのですが、ケースバイケースでチェックボックスを限定して処理(例えば1~20のチェックボックスがあって、そのうち1~10、11~20を分けてFor文で処理したいケース)もあって、こういった場合、どうしたらいいのかなぁと考えていたのですが、そのときに#5さんから#1さんのアレンジした回答を頂き何とか解決することができました。