• ベストアンサー

チェックボックスで指定出来る数を制限したい

ユーザーフォームにて、合計20個のチェックボックスを表示させ、そのうち12個を選択させたいと考えています。 その際、12個以上は選択出来ないようにする事は可能でしょうか? ※「12個以上選択した状態で決定するとエラーメッセージを表示させる」といった感じのプログラムは組めますが、もし可能であれば12個以上選択出来ないようにしたいです

質問者が選んだベストアンサー

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.3

'Index付きCheckBoxの場合の例です。 '参考にしてください。 '(1)CheckBoxをClickした時チェックの場合 Private Sub Check1_Click(Index As Integer)   Dim wCnt    As Integer   '   wCnt = 0   For wI = 1 To 20     If Check1(wI).Value = 1 Then       wCnt = wCnt + 1       If wCnt > 12 Then         MsgBox "チェックMAX件数(12)を超えています。"         Check1(wI).Value = 0         '抜ける         Exit Sub       End If     End If   Next End Sub '(2)決定ボタンを押した時チェックの場合 Private Sub Command1_Click()   Dim wI     As Integer   Dim wCnt    As Integer   '   wCnt = 0   For wI = 1 To 20     If Check1(wI).Value = 1 Then       wCnt = wCnt + 1     End If   Next   If wCnt > 12 Then     MsgBox "チェックMAX件数(12)を超えています。"     '抜ける     Exit Sub   End If   '次の処理へ進む   '/////////////// End Sub (1)の方法をお勧めします。

VAN613
質問者

お礼

迅速かつ的確な回答を頂きどうもありがとうございました。 Private Sub CheckBox1_Click() Dim wCnt As Integer 'チェックの数を格納 Dim m As Integer wCnt = 0 For m = 1 To 23 If Controls("CheckBox" & m).Value = "True" Then wCnt = wCnt + 1 If wCnt > 12 Then MsgBox "チェックMAX件数(12)を超えています。" Controls("CheckBox" & 1).Value = "False" '抜ける Exit Sub End If End If Next End Sub Private Sub CheckBox2_Click() Dim wCnt As Integer 'チェックの数を格納 Dim m As Integer wCnt = 0 For m = 1 To 23 If Controls("CheckBox" & m).Value = "True" Then wCnt = wCnt + 1 If wCnt > 12 Then MsgBox "チェックMAX件数(12)を超えています。" Controls("CheckBox" & 2).Value = "False" '抜ける Exit Sub End If End If Next End Sub ・・・ といった感じで全てのチェックボックスに対しプログラミングする事で、所望の動作をさせる事が出来ました。本当にどうもありがとうございます。

その他の回答 (2)

  • Mnosan
  • ベストアンサー率25% (9/36)
回答No.2

12個選択した段階でチェックボックス自体を表示しなくするでは駄目ですか?

  • pick52
  • ベストアンサー率35% (166/466)
回答No.1

VB自体はよく分からないので明確に回答はできませんが、 チェックボックスはボタンの一種なので選択すると onclick イベントが発生するはずです。 そこで、チェックされている数を調べてチェックされている数が 12個以上ならその押したチェックボックスのチェックを外すことで 対応できそうです。 でも、複雑なことやり過ぎると不具合の原因にもなりますし、 無難な方法で対応した方がいいと思いますよ。

関連するQ&A