• ベストアンサー

エクセル VBA チェックボックスの制限について

チェックボックス5個のうち 2つまでチェックを入れてもらい チェックボックスに対応する数値を セルに出力したいのです。 『実行』というボタンをつくったのですが、 チェックを入れ 実行ボタンを押し、 チェックが2つを超える場合に やり直しをさせるものを作りたいのです。 どなたかご教授お願いします。 VBA初心者です。

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

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

CheckBoxの名前を、オブジェクト変数に入れるとループ関数が使えます -------------------------------- Private Sub CommandButton1_Click()   Dim ckbx(5) As Object   Set ckbx(1) = CheckBox1   Set ckbx(2) = CheckBox2   Set ckbx(3) = CheckBox3   Set ckbx(4) = CheckBox4   Set ckbx(5) = CheckBox5   For i = 1 To 5     If ckbx(i).Value Then       nx = nx + 1     End If   Next   If nx > 2 Then     MsgBox "チェック、多すぎ"     For i = 1 To 5       ckbx(i).Value = False     Next   Else     ' 2個以下の場合の処理     MsgBox "2個以下"   End If End Sub

ya-ha-ya
質問者

お礼

すぐに使える内容のものを 丁寧に教えて頂きありがとうございました。 参考にさせていただきます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>チェックボックス5個のうち (1)フォームに貼り付ける (2)シートに貼り付ける で差があるのだ。初心者で気がついてないのかもしれないが、質問に書いてない場合が多い。 ーー シート(下記ではSheet3)上に、の場合 Private Sub CommandButton1_Click() For Each chb In Worksheets("Sheet3").OLEObjects MsgBox chb.Name MsgBox chb.progID If chb.progID = "Forms.CheckBox.1" And chb.Object.Value = True Then n = n + 1 Next MsgBox n If n > 2 Then MsgBox "エラー" End Sub ーー Msgbox は納得したら削除のこと(エラー表示の行を除き)。

ya-ha-ya
質問者

お礼

>チェックボックス5個のうち (1)フォームに貼り付ける で行っております。 シート上にも貼り付けれる方法は知りませんでした。 ご丁寧にありがとうございます。 シート上に貼り付ける方法を調べて実行してみようと思います。 ありがとうございました。

回答No.1

考え方としては 5つのチェックボックスを順に調べていき チェックが入っていれば用意した変数を インクリメント(カウントを増やす)し 最終的にその数が2以上ならばやり直させる というコードを書けばいいと思いますが、 おっしゃることが一つしか選択させないものを 作りたいというだけなら チェックボックスではなく ラジオボタンを使ったほうが効率がいいと思います。

ya-ha-ya
質問者

お礼

チェックを1つではなく ”2つだけ”or”2つ以下” してもらいたいのです。 インクリメントについて勉強してみます。 ありがとうございました。

関連するQ&A