過去ログ

                                Page     464
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼沢山のチェックボックスを一斉にFalse  123 02/12/13(金) 13:15
   ┗Re:沢山のチェックボックスを一斉にFalse  つん 02/12/13(金) 14:20
      ┣ついでに もうふたつお願いします  123 02/12/16(月) 14:30
      ┗一部訂正  123 02/12/16(月) 17:45
         ┗Re:一部訂正  つん 02/12/16(月) 18:29
            ┗Re:一部訂正  123 02/12/17(火) 11:06

 ───────────────────────────────────────
 ■題名 : 沢山のチェックボックスを一斉にFalse
 ■名前 : 123
 ■日付 : 02/12/13(金) 13:15
 -------------------------------------------------------------------------
   みなさん こんにちは。123です。

今度は、チェックボックスについて教えてください。
チェックボックスが30個 ユーザーフォーム上にあります。
コマンドボタンをClickすると、全部Falseになるようにしたいのですが、
CheckBox1.Value = False というコードを30こ分記述するのではなく、
一発でできる方法はあるでしょうか?
ちなみに、ChekBoxの名前はそれぞれいろんな項目の名前になっています。
グループは全部同じグループにすることは可能です。

宜しくお願いします。
 ───────────────────────────────────────  ■題名 : Re:沢山のチェックボックスを一斉にFalse  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/12/13(金) 14:20  -------------------------------------------------------------------------
   123 さん、こんにちは

>チェックボックスが30個 ユーザーフォーム上にあります。
>コマンドボタンをClickすると、全部Falseになるようにしたいのですが、
>CheckBox1.Value = False というコードを30こ分記述するのではなく、
>一発でできる方法はあるでしょうか?
>ちなみに、ChekBoxの名前はそれぞれいろんな項目の名前になっています。
>グループは全部同じグループにすることは可能です。

同じグループっちゅーことは、フレームで囲むっちゅーことですよね?
これでどうですか?

Private Sub CommandButton1_Click()

  Dim i As Long
  
  With Frame1
    For i = 0 To .Controls.Count - 1
      If TypeName(.Controls(i)) = "CheckBox" Then
        .Controls(i).Value = False
      End If
    Next i
  End With
  
End Sub

ふれで、「Frame1」内のチェックボックスが全部Falseになります。
試してみてにゃ
 ───────────────────────────────────────  ■題名 : ついでに もうふたつお願いします  ■名前 : 123  ■日付 : 02/12/16(月) 14:30  -------------------------------------------------------------------------
   ▼つん さん:
こんにちは

いつもありがとうございます。
TypeNameを使うんですね。やっと理解できるようになってきました。
でも なんで iを「1 To .Controls.Count」にせずに
「0」から始めるんですか?

それと 全部「False」にするんですが、CheckBox10とCheckBox11だけは
Trueにする といった場合はどうすればよいのでしょうか?

何度もすみませんが宜しくお願いします。


>Private Sub CommandButton1_Click()
>
>  Dim i As Long
>  
>  With Frame1
>    For i = 0 To .Controls.Count - 1
>      If TypeName(.Controls(i)) = "CheckBox" Then
>        .Controls(i).Value = False
>      End If
>    Next i
>  End With
>  
>End Sub
 ───────────────────────────────────────  ■題名 : 一部訂正  ■名前 : 123  ■日付 : 02/12/16(月) 17:45  -------------------------------------------------------------------------
   ▼つん さん:
こんにちは

いつもありがとうございます。
TypeNameを使うんですね。やっと理解できるようになってきました。
でも なんで iを「1 To .Controls.Count」にせずに
「0」から始めるんですか?

それと 全部「False」にするんですが、CheckBox10とCheckBox11だけは除く
といった場合はどうすればよいのでしょうか?

何度もすみませんが宜しくお願いします。


>Private Sub CommandButton1_Click()
>
>  Dim i As Long
>  
>  With Frame1
>    For i = 0 To .Controls.Count - 1
>      If TypeName(.Controls(i)) = "CheckBox" Then
>        .Controls(i).Value = False
>      End If
>    Next i
>  End With
>  
>End Sub
 ───────────────────────────────────────  ■題名 : Re:一部訂正  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/12/16(月) 18:29  -------------------------------------------------------------------------
   123さん、こんばんは

>でも なんで iを「1 To .Controls.Count」にせずに
>「0」から始めるんですか?

初期値が「0」やからです。
言葉を知らなくて上手く言えないですが、配列が特に指定しないと、インデックスの最小値が「0」になるみたいに・・・

>それと 全部「False」にするんですが、CheckBox10とCheckBox11だけは除く
>といった場合はどうすればよいのでしょうか?

Frame1.Controls(i).Nameでコントロールの名前が取得できるので、
それで判断してIf文で分岐させたらいいと思います。

ちと忙しいので雑な回答ですんませんm(__)m
 ───────────────────────────────────────  ■題名 : Re:一部訂正  ■名前 : 123  ■日付 : 02/12/17(火) 11:06  -------------------------------------------------------------------------
   ▼つん さん:

ありがとうございます。
For NextでのIf文って、一回毎にIfを通るんですね。
すっごく 勉強になりました。

>Frame1.Controls(i).Nameでコントロールの名前が取得できるので、
>それで判断してIf文で分岐させたらいいと思います。
>
>ちと忙しいので雑な回答ですんませんm(__)m

お忙しい中、ありがとうございました。
充分なご回答でした。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 464