Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
チェックボックスのチェックの判定
投稿日時: 18/01/07 11:01:00
投稿者: kohkoh

ユーザーフォームにおいて5個のチェックボックスを配置し、そのうち2か所以上にチェックが入ったら
メッセージで「2か所以上にチェックが入っています。」と警告が出るようにしたいのですが(5個のチェックボックスのうち2か所以上の選択ができないようにしたい。)、どなたか良い方法をご存知ないでしょうか?

回答
投稿日時: 18/01/07 11:30:44
投稿者: WinArrow
投稿者のウェブサイトに移動

コマンドボタンクリックしていることと推察して
 
Private Sub CommandButton1_Click()
Dim ChkCTRL As MSForms.Control, cnt As Long
 
    cnt = 0
    With Me
        For Each ChkCTRL In .Controls
            If ChkCTRL.Name Like "Check*" Then
                If TypeName(ChkCTRL) = "CheckBox" And ChkCTRL.Value Then
                    cnt = cnt + 1
                End If
            End If
        Next
    End With
    If cnt > 2 Then MsgBox "2個以上"
End Sub

回答
投稿日時: 18/01/07 12:13:29
投稿者: simple

チェックボックスではなく、オプションボタンを利用してはどうでしょうか。
つまり一つのフレームのなかでは2つ以上は選択できませんから。
(なお、何もチェックしないという状態もあるとすれば、
  "選択せず"というオプションを最初に選択状態にしておくことで対応できます。)

回答
投稿日時: 18/01/07 13:11:55
投稿者: LMK

もちろん、リストボックス または コンボボックス を使うこともできます。
何が最適なのか、できる限り広い選択肢の中から検討してください。

回答
投稿日時: 18/01/07 14:55:24
投稿者: WinArrow
投稿者のウェブサイトに移動

すみません。
説明をしっかり読んでいなくて、早とちりしてしまいました。
 
私のコードは、スルーして
チェックボックス以外をお勧めします。

投稿日時: 18/01/07 15:07:14
投稿者: kohkoh

アドバイスありがとうございます。参考させてもらいます。