• ベストアンサー

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

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

  • VAN613
  • お礼率82% (141/170)

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

  • ベストアンサー
  • 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

  • チェックボックスの必須項目指定

    入力フォームにあるチェックボックスをPHPを使って必須にしたいです。 何もチェックしないまま送信すると、 「一つ以上チェックしてください」とチェックボックスの下に表示される仕組みを作りたいのですが、どのようなものがありますでしょうか? 調べてみましたが、エラーページにとぶ仕組みだったり確認画面への送り方などしかみつからず・・・ よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスの選択状況からエラーチェック

    メールフォームを作成しているのですが、 フォーム内に17つのチェックボックスが存在しています。 個々のチェックボックスはそれぞれ違う変数名を持っています。 そこで質問なのですが、 17つあるチェックボックスのうち、1つ以上選択されていたらOKで、何も選択されていない場合のみエラーになるようにしたいのですが、どのような制御文にしてよいのかわかりません。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • チェックボックスのチェック忘れを防止

    アドバイスご指導をよろしくお願い致します。 [環境] オペレーションOS:windows10 オフィスソフト:ACCESS2007 [困っていること] テーブルのレコードにチェックボックスを設けていますが、フォームで入力の際にチェックボックス欄のチェック忘れを防止したいと思っています。しかし、チェックボックスのテーブルプロパティーに値要求の項目がないので、どの様に対処すればよいか教えていただけませんでしょうか。 [やりたいこと] チェックボックス「名前:予定」のチェック忘れを防止したいと思っています。例えばチェックを忘れた時に、フォームを終了させようとした際「予定欄のチェック忘れ」みたいに表示させるとか、フォームの入力中に「予定欄のチェック忘れ」のメッセージをだせないでしょうか。 以上、よろしくお願いします。

  • チェックされたチェックボックスの数を調べるには?

    不定数のチェックボックスがあり、ボタンを押すとチェックされた項目の数を返すようにしたいのですが、どのように記述すれば良いでしょうか? 例えばチェックボックスが5個あり、そのうちの3個がチェックされている状態でボタンを押すと、アラートで3と表示する、といった感じです。

  • ユーザーフォームのチェックボックスIndex

    Excel 2002を使用しています ユーザーフォームのVBAを教えてください ユーザーフォームにチェックボックスをつけたリストを表示しました .ListStyle = fmListStyleOption リストボックスは5列ですが チェックしたリストボックスの1列の値は ListBox1.List(ListBox1.ListIndex)でとりだせましたが 2列目以降の他の列の値はどうとりだせばいいのでしょうか? また、リストボックスを選択するとチェックボックスにチェックが入り文字が反転され もう一度チェックするとチェックボックスのチェックが外れますが チェックボックスにチェックが入っている状態かどうかを判別する方法を教えてください チェックボックスのIndexも取得したいのですが。

  • チェックボックスをクリックしたら、テキストに入力出来る様にしたいです

    今メールフォームを作っています。 チェックボックスにチェックしたら、テキストフィールドに記入しないと、 エラーがでる様にJavascriptでチェックをかけたいのですが教えて頂けませんでしょうか。 下記のようなフォームにしたいです。 ■フォーム これをあなたは何処で知りましたか? チェックボックス1 新聞 チェックボックス2 テレビ チェックボックス3 その他 テキストフィールド その他を選んだ方は記入して下さい。 このチェックボックスは必須にして、 チェックボックス1~3までのどれかをチェックしないとアラートを表示したいです。 また、チェックボックス3を選択したのにテキストフィールドに入力していない場合も アラートを表示したいです。 上記のalertは送信ボタン<input name="submit" type="submit" value="情報を送信する"> を押した際に出したいです。 この様なチェックボックスのグループを同じフォームに2つ作りたいです。

  • チェックボックスの入力チェック

    フォームメール用のCGIを作成しているのですが、チェックボックスの入力チェックをCGIでおこないたい場合、どのようにすればよいのでしょうか? 複数選択可で1つも選択されていない場合エラーメッセージを出すようにしたいと思っており、チェックボックスには1個づつ個別の変数を用意しています。 if ($name eq "") { print "Content-type: text/html;charset=euc-jp\n\n"; print "お名前を入力してください。"; exit(0); } テキストボックスはこのように入力チェックをおこなっています。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • チェックボックスで指定してメールを送りたい。

    ある会員専用サイトを作っています。会員リストの表(会員No、氏名、メルアド)を作成しphpでmysqlからデータ抽出し表示させました。そこで各行の先頭にチェックボックスを付けてチェックした会員にだけメールを送りたいと思ってます。選択後はメールフォームで送信したいと思っています。 ですがまったくやり方が解らず途方にくれています。 あまりにも質問が曖昧すぎるようでしたらプログラム作成の流れというか、方向性だけでもいいのでどなたかお力添え願えませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスの使い方

    チェックボックスの使い方 エクセルでの質問です ユーザーフォームにシート名を入れたチェックボックスが、6こ付いており チェックを入れたシートのみを印刷(コマンドボタンで実行)しようとしております 以下のコードを印刷のコマンドボタンに埋め込みました --------------------------------- Private Sub CommandButton1_Click() On Error GoTo HandleErr Dim i As Integer For i = 1 To Sheets.Count If Me.Controls("CheckBox" & i).Value Then Sheets(i).PrintOut End If Next i Exit Sub HandleErr: MsgBox "印刷シートが選択されていません" End Sub --------------------------------- (1)印刷が正常になされても”印刷シートが選択されていません” とメッセージボックスがでてしまいます チェックされていない場合はエラーメッセージを出しつつ、回避する方法を教えて下さい (2)各シート内の使用されている任意のセル範囲を印刷したいのですが、 どのようなコードをどの位置で使用すればよろしいでしょうか? 素人的な質問で申し訳ありません よろしくご回答願います

  • Microsoft Access チェックボックス

    こんにちわ。 Microsoft Access2000です。 フォーム(1) 1.売掛金 2.チェックボックス 上記のように、あるとします。 フォームフッターに、売掛の合計を出るようにしています。 同じように、チャックボックスに印が入っているのだけ合計って表示できますか? クエリーで絞ればよいのですが、チャックが入っていないのも表示しておきたいのです。 お願いします。

専門家に質問してみよう