プロが教える店舗&オフィスのセキュリティ対策術

Excel2000のVBAで以下のような処理をしたいのでご教示願います。

Userform1にCheckBox1~CheckBox10の10個のチェックボックスがあったとして以下のようにFor文でまとめて処理したいのですがうまくいきません。

 For I = 1 to 10
  UserForm1.CheckBox(I).value = True
 NEXT

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございました。
この方法で質問した内容の処理ができることは確認できました。
この方法はすべてのチェックボックスが対象になってしまうのですね。
当方の質問の仕方が悪かったのですが、ケースバイケースでチェックボックスを限定して処理(例えば1~20のチェックボックスがあって、そのうち1~10、11~20を分けてFor文で処理したいケース)もあって、こういった場合、どうしたらいいのかなぁと考えていたのですが、そのときに#5さんから#1さんのアレンジした回答を頂き何とか解決することができました。

お礼日時:2004/10/30 15:22

どうしても配列にしたければ、#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
    • good
    • 0
この回答へのお礼

ありがとうございました。
#1さんへのお礼にも書かせてもらったのですが、全てのチェックボックスだけでなく限定したチェックボックスにFor文で処理したいケースもあったので#5さんの方法でうまく解決できました。

お礼日時:2004/10/30 15:29

#1です。

#3に反応しちゃいました。

#3さんへ
マルチポストに対するモーグの主張は理解出来ますが、より適切なコミュニティに誘導する行為だって、その場が終了する形であればマルチポストやネチケット違反にはならないと私は思います。

質問者 : ○○について知りたい
         ↓
回答者 : その関連なら ××で聞くと良いよ。詳しい人が多いから。
         ↓
質問者 : [解決] 情報ありがとう、そちらで質問してみます。

これらを認めていないというのはモーグのマイルールで「モーグの掲示板」に書き込みする際のルールだと思います。(ある意味ではモーグで解決不可な場合を想定していないとも言えますね)
モーグのマイルールが他のサイトの運営を抑制出来るものでは無いと思いますが、如何でしょう?
    • good
    • 0

お~っと、モーグ


は他のコミュニテイサイト
の紹介はサイト規約違反ですよ。

逆もまた真なり?
    • good
    • 0

VBAでは対応していないので、工夫が必要です。


下記を参考にしてください。

参考URL:http://www.moug.net/skillup/opm/opm08-01.htm,
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A