• ベストアンサー

エクセルVBAで

お世話になります。 エクセルVBAで簡易プログラムを作成しています。 その中でユーザーフォームを作り、チェックボックスで 6項目からどれか一つ選択する様な仕組みを作っています。 利用者が二つ以上選択(チェック)出来ない様にしたいの ですが、どの様にすれば良いでしょうか。 ちなみに今の記述は下記の様になります。 ご教授下さいます様、宜しくお願い致します。         記 If CheckBox1 = False Then If CheckBox2 = False Then If CheckBox3 = False Then If CheckBox4 = False Then If CheckBox5 = False Then If CheckBox6 = False Then MsgBox "どれか選択して下さい!" GoTo err_jmp Else: mytoki = "3年前から" End If Else: mytoki = "2年前から" End If Else: mytoki = "1年前から" End If Else: mytoki = "半年前から" End If Else: mytoki = "1週間前から" End If Else: mytoki = "昨日から" End If

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

OptionButton、6個程度ですので下記のような単純な方法が分かり易いでしょう。 CommandButttonをクリックして処理という場合 '---------------------------------------------- Private Sub CommandButton1_Click()    Dim myToki As String   Select Case True     Case OptionButton1.Value         myToki = "3年前から"     Case OptionButton2.Value         myToki = "2年前から"     Case OptionButton3.Value         myToki = "1年前から"     Case OptionButton4.Value         myToki = "半年前から"     Case OptionButton5.Value         myToki = "1週間前から"     Case OptionButton6.Value         myToki = "昨日から"     Case Else         myToki = ""   End Select   If myToki = "" Then     MsgBox "どれか選択してください"     Exit Sub   End If     ==ここから選択後の処理== End Sub '----------------------------------------- 以上です。  

miruchoko
質問者

お礼

早々のご回答ありがとうございます。 大変参考になりました。 今後とも宜しくお願い致します。

その他の回答 (2)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

ラジオボタンのほかにりストボックスでも良いですね

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

チェックボックスをやめて、ラジオ(オプション)ボタンにしたら?

miruchoko
質問者

お礼

ご回答ありがとうございます。 ラジオボタンとはエクセルで言うオプションボタンの事でしょうか。 このオプションボタンを使うとしたら、記述コードはどの様に 変わりますでしょうか。 ご教授頂きたく宜しくお願い致します。

関連するQ&A

  • シートの条件選択

    EXCEL2003で下記のようにユーザーフォーム上のオプションボタンと チェックボックスの選択状況に応じてシートを選択するようにしていました が、EXCEL2007で実行したら、「sel_sw」のところで 「コンパイルエラー:プロジェクトおよびライブラリが見つかりません」 とエラーが出てしまいました。 EXCEL2007ではどのように記述すればよいか、教えていただけますでしょうか。 よろしくお願いします。 --------------------------------------------------------------- Private Sub 印刷する_Click() UserForm9.Hide With UserForm9 If .OptionButton1 = False And .OptionButton2 = False Then MsgBox ("オプションボタン選択") GoTo error End If If .CheckBox2 = False And .CheckBox3 = False And .CheckBox4 = False And .CheckBox5 = False Then MsgBox ("チェックボックスを選択") GoTo error Else sel_sw = True If .CheckBox2 = True And .OptionButton1 = True Then Sheets("A").Select sel_sw sel_sw = False End If If .CheckBox2 = True And .OptionButton2 = True Then Sheets("B").Select sel_sw sel_sw = False End If If .CheckBox3 = True And .OptionButton1 = True Then Sheets("C").Select sel_sw sel_sw = False End If If .CheckBox3 = True And .OptionButton2 = True Then Sheets("D").Select sel_sw sel_sw = False End If If .CheckBox4 = True Then Sheets("E").Select sel_sw sel_sw = False End If If .CheckBox5 = True Then Sheets("F").Select sel_sw sel_sw = False End If End If End With Exit Sub error: UserForm9.Show End Sub

  • VBAでシート上のTEXTBOXの値を変更するとイベントが無限に入る。

    ExcelのVBAでシート上に貼り付けたCheckBoxで  内容を変更したくない場合、  下記のようなプログラムを作りました。 Private Sub CheckBox1_Click()     MsgBox "内容を変更しないでください"     If CheckBox1.Value = True Then       CheckBox1.Value = False     Else       CheckBox1.Value = True     End If End Sub すると、イベントが入りまくって、抜け出せなくなりました。 セルの場合は、Application.EnableEvents = False を使用してイベントを止めることができたのですが、 コントロールの場合は、そのような命令が見つかりません。 なにか良い手はないでしょうか。 よろしくお願いいたします。

  • エクセル チェックボックスの解除について(VBA)

    YES/NOを入力させる為の下記のVBAにおいて、チェックボックス1をチェックすると、アの部分でチェックボックス2の解除を行う関係で?、シート上でチェックボックス2を操作していないのにもかかわらず、勝手にCheckBox2_Click()に入り、命令文イを実行してしまいます。 ただ単にSub CheckBox1_Click()のルーチンの最後までの処理で終わりたいのですが、どうしたらよいのでしょうか。 Private Sub CheckBox1_Click() If CheckBox1 = True Then Sheets("sheet1").Range("A1") = 1 Sheets("sheet1").Range("A2") = 0 CheckBox2 = False・・・ア Else Sheets("sheet1").Range("A1") = "" End If End Sub Private Sub CheckBox2_Click() If CheckBox2 = True Then Sheets("sheet1").Range("A1") = 0 Sheets("sheet1").Range("A2") = 1 CheckBox1 = False Else Sheets("sheet1").Range("A2") = ""・・・イ End If End Sub

  • エクセル VBA チェックボックスについて

    よろしくお願い致します。 OS:XP エクセル2003 VBAのことは、まったくの初心者です。 質問なのですが、下記のようなチェックボックス7にチェックが入れば、チェックボックス8~11に自由にチェックが入れれるようになり、逆にチャックボックス7にチェックが入ってない場合は、チェックボックス8~11のチェックはクリアされ、チェックできないものを作りました。 ここから、チェックボックス7にチェック入れたあとは、必ずチェックボックス9~11のどれかにチェックが入っている状態(ラジオボタンのような)で、チェックボックス7にチェックが入ってなかったら、8~11のチェックがクリアで尚且つ、チェックができなくなるようにするにはどうすればよいでしょうか? よろしくお願い致します。 Private Sub CheckBox7_Click() If CheckBox7.Value = True Then CheckBox8.Enabled = True CheckBox9.Enabled = True CheckBox10.Enabled = True CheckBox11.Enabled = True Else CheckBox8.Value = False CheckBox9.Value = False CheckBox10.Value = False CheckBox11.Value = False CheckBox8.Enabled = False CheckBox9.Enabled = False CheckBox10.Enabled = False CheckBox11.Enabled = False End If End Sub

  • Excel VBA CheckBoxの漏れ防止

    CheckBoxのチェック漏れ防止方法で現在以下のコードで実行しています。 CheckBox1~7つあり、1つも選択していない場合は、メッセージを出す仕組みです。 Private Sub CommandButton1_Click() If CheckBox1 = True Or CheckBox2 = True Or CheckBox3 = True Or CheckBox4 = True Or _ CheckBox5 = True Or CheckBox6 = True Or CheckBox7 = True Then MsgBox "OK" Else MsgBox "必ず一つ以上選択してください。" End If End Sub 今は、CheckBoxが7つだけなのですが、今後20個ぐらいに増える予定です。 For~Nextで試してみたのですが、メッセージがチェックした分だけ表示を繰り返してしまいました。 今まで通り、Orでつなげても良いのすが、もう少しコードをコンパクトにする方法を探しているのですが、なかなか見つかりません。 ご教授をお願いします。

  • 初心者です。エクセルVBAの質問なのですが・・・

    エクセルのVBAで 例えば・・・IF関数を使いたい時に Public Sub 練習() 年齢 = InputBox("あなたは何歳ですか。数字だけを入力して下さい。") If 年齢 < 20 Then MsgBox "未成年ですね" ElseIf 年齢 < 30 Then MsgBox "20代ですね。" Else MsgBox "その他の年代ですね" End If End Sub                            のようなものを作って、実行をしたときに、数字を入れてOKボタンではなく、ダイアログボックスのキャンセルや閉じるボタンを押したときに、「その他の年代ですね」が出てきますが、それを出てこないようにすることはできますか?(例えば、キャンセルボタンのような役割をさせるなど・・・)  結構難しいですかね? 教えて下さい。お願いします。

  • エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?

    ワークシート関数で書けば =IF(OR(F18=0,AND(F15>0,F16>0)),TRUE)です。 これをVBAで書こうとして If Sheet1.Range("F18") = 0 Or Sheet1.Range("F15") > 0 And Sheet1.Range("F16") > 0 Then MsgBox True Else MsgBox False End If とやってみたのですが、正しくないようです。 どのように書けばいいのでしょうか?

  • エクセル・時刻に関する質問

    添付画像のようなエクセルで以下の標準モジュールを作っています。 Sub test001() If Cells(2, 2) = TimeValue("9:00:00") Then MsgBox ("9:00:00認識しました") Else MsgBox ("9:00:00認識しませんでした。") End If If Cells(3, 2) = TimeValue("9:05:00") Then MsgBox ("9:05:00認識しました") Else MsgBox ("9:05:00認識しませんでした。") End If If Cells(3, 2) = 0.378472222222222 Then MsgBox ("2回目9:05:00認識しました") Else MsgBox ("2回目9:05:00認識しませんでした。") End If If Cells(4, 2) = TimeValue("9:10:00") Then MsgBox ("9:10:00認識しました") Else MsgBox ("9:10:00認識しませんでした。") End If If Cells(5, 2) = TimeValue("9:15:00") Then MsgBox ("9:15:00認識しました") Else MsgBox ("9:15:00認識しませんでした。") End If If Cells(6, 2) = TimeValue("9:20:00") Then MsgBox ("9:20:00認識しました") Else MsgBox ("9:20:00認識しませんでした。") End If End Sub 実行すると、9:05:00 だけが、「9:05:00認識しませんでした。」となります。 時刻以外は同じ内容のはずですが 9:05:00 だけ認識されません。 解決策をお願いします。

  • エクセルVBA Inputboxについて教えてください。

    InputBoxの使い方について教えてください。 テストで下記のように書いてみました。 Sub input_test2() ans = InputBox("質問!適当に数字を入れてね") MsgBox Application.WorksheetFunction.IsNumber(ans), vbInformation, "入力判定" If Application.WorksheetFunction.IsNumber(ans) Then If ans = 0 Then MsgBox "入力されたのは、 0", vbInformation, "回答" If ans = 1 Then MsgBox "入力されたのは、 1", vbInformation, "回答" If ans = 2 Then MsgBox "入力されたのは、 2", vbInformation, "回答" If ans = 3 Then MsgBox "入力されたのは、 3", vbInformation, "回答" If ans >= 4 Then MsgBox "入力されたのは、 4以上", vbInformation, "回答" Else MsgBox "入力は数字でしてください!", vbExclamation, "お願い" End If End Sub 1.入力が数値ならTRUEがかえると思ったのですが、何を入れてもFALSEしかかえりません。どこがまずいのでしょうか? 2.表示されるInputBoxのサイズが随分横に長いのですが、サイズを変える方法はあるのでしょうか? 3.MsgBoxの"入力判定"や”回答”ようにInputBoxにも最上行に日本語を表示させる方法はないでしょうか? 以上、よろしくお願いいたします。

  • Excel VBAを簡素化したいのですが動きません

    お世話になります。VBA初心者です。 下記TESTは動くのですが、『If myINT= Then』が永遠に続くので簡素化したく 『Rows("myINT : myINT").Select』これを入れてみたのですが全く動きません。 簡素化した記述を教えて下さい。宜しくお願い致します。 Sub TEST() Dim myINT As Integer myINT = ActiveSheet.Cells.SpecialCells(xlLastCell).Row   If myINT = 1 Then    Rows("1:1").Select    ElseIf myINT = 2 Then    Rows("2:2").Select   ElseIf myINT = 3 Then    Rows("3:3").Select   Else MsgBox "TEST" End If End Sub