プロが教えるわが家の防犯対策術!

チェックボックス5個のうち
2つまでチェックを入れてもらい
チェックボックスに対応する数値を
セルに出力したいのです。

『実行』というボタンをつくったのですが、

チェックを入れ
実行ボタンを押し、
チェックが2つを超える場合に
やり直しをさせるものを作りたいのです。

どなたかご教授お願いします。

VBA初心者です。

A 回答 (3件)

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/11/18 00:44

>チェックボックス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 は納得したら削除のこと(エラー表示の行を除き)。
    • good
    • 0
この回答へのお礼

>チェックボックス5個のうち
(1)フォームに貼り付ける
で行っております。

シート上にも貼り付けれる方法は知りませんでした。
ご丁寧にありがとうございます。
シート上に貼り付ける方法を調べて実行してみようと思います。
ありがとうございました。

お礼日時:2009/11/18 00:39

考え方としては


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

チェックを1つではなく
”2つだけ”or”2つ以下”
してもらいたいのです。

インクリメントについて勉強してみます。
ありがとうございました。

お礼日時:2009/11/18 00:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!