[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスを使用した問題を作成』(テル)
ユーザーフォーム上に20個のチェックボックスを配置しています。
正解のチェックボックスを16個。
不正解のチェックボックスは4個。
【動作】
16個のチェックボックスが選ばれている場合のみ、正解と表示。
正解以外はすべて不正解と表示。
If文でコードを記述すると、コードの量がかなり多くなります。
If文以外で記述する方法があれば教えてください。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
・特定の16個のチェックボックスがすべてチェックされ、
かつ
・特定の 4個のチェックボックスがすべてチェックされていない
場合に限って、その問題は正解ということなんですか?
>If文でコードを記述すると、コードの量がかなり多くなります。
さわりだけでも書いてみては?
たぶん、
Controls("Checkbox" & k).Value
を使って繰り返し計算に持ち込むということなんだろうけど。
ここまででもヒントになっていますか?
(γ) 2017/08/15(火) 22:37
Dim I As Long
For I = 1To 20
If Controls("オブジェクト名" & I).Value = True And Controls("オブジェクト名2" & I).Value = True And ・・・・ 'オブジェクトが正解の状態(正解の16個にチェックがあり、かつ、不正解の4個にチェックがない) '処理の動作 End If Next I '処理の動作 (不正解の場合の処理コード)
(テル) 2017/08/16(水) 03:00
ああそうか、コードのコメントが回答ということでしたか。 コード読み飛ばしていました。
参考例です。
Sub test() Dim b As Boolean Dim ary, ary2
b = True ary1 = Array(1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14, 16, 17, 18, 20) ary2 = Array(6, 11, 15, 19)
For Each n In ary1 b = b And Controls("Checkbox" & n).Value = True Next For Each n In ary2 b = b And Controls("Checkbox" & n).Value = False Next
If b = True Then MsgBox "正解" End Sub
途中でfalseになったら、それ以降はチェックせずにループを抜ける方法もあるし、 もっと気の利いた書き方があると思うが、ごく基本的な書き方を例示しました。 私はこれで失礼します。 (γ) 2017/08/16(水) 06:38
(γ) 2017/08/17(木) 16:34
何かやりたいことがころころ替わっているような気がするのですが、課題か何かなんでしょうかね?
[[20170812175049]] 『選択されたチェックボックス別に異なるイベントを』(テル)
(カリーニン) 2017/08/17(木) 17:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.