ACCESSVBAでラジオボタンを実行させたい

このQ&Aのポイント
  • フォームにラジオボタンを作成し、それぞれ、A・Bと設定しました。Aを選択した場合に、Aのコードを実行させ、Bを選択した場合にBのコードを実行させたいと考えています。以下のコードを作成しましたが、うまくいきません。どこが間違っているのでしょうか。
  • ACCESSVBAでフォームにラジオボタンを作成しました。ラジオボタンはAとBの2つを設定しました。Aを選択した場合にはAのコードを実行し、Bを選択した場合にはBのコードを実行するようにしたいと考えています。しかし、以下のコードを作成してもうまくいきません。どこが間違っているのでしょうか。
  • ACCESSVBAのフォームにラジオボタンを設置しました。ラジオボタンはAとBの2つを用意しました。Aを選択した場合にはAのコードを、Bを選択した場合にはBのコードを実行させたいと思っています。以下のコードを作成しましたが、うまく動作しません。どこが問題なのでしょうか。
回答を見る
  • ベストアンサー

ACCESSVBAでラジオボタンを実行させたい

フォームにラジオボタンを作成し、それぞれ、A・Bと設定しました。 (プロパティで”名前”を”A””B”とした) そこで、Aを選択した場合に、Aのコードを実行させ、 Bを選択した場合にBのコードを実行させたいと考えています。 以下のコードを作成しましたが、うまくいきません。 どこが間違っているのでしょうか。よろしくおねがいします。 ********************************************** Private Sub test_Click() Dim fNAME As String fNAME = "c:\test.htm " Open fNAME For Output As #1 Print #1, "<html>" Print #1, "<head></head>" Print #1, "<body>" If & A & = True Then Print #1, "<table>" … Print #1, "</table>" ElseIf & B & = True Then Print #1, "<table>" … Print #1, "</table>" End If Print #1, "</body></html>" End Sub

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

  • ベストアンサー
回答No.1

>フォームにラジオボタンを作成し、それぞれ、A・Bと設定しました。 というのは、 フォームに、オプショングループでフレーム(フレーム1)を作り、その中にオプションボタンを2個作り、A・Bと設定した。 と言うことだと思って話します。 オプションボタンがオプショングループ内に配置されて、いわゆるラジオボタン(フレーム内で1つしか選べない)になった場合、オプションボタンの値ではなくオプショングループから情報を得ます。 例えば、オプショングループの名前が「フレーム1」とします。 最初にプロパティでオプションボタンAとBのオプション値を設定してください。 A=1、B=2 にします(通常、配置した順に1、2、3・・・と自動的に付きますが) オプショングループ(フレーム1)の既定値(DefaultValue)に、初期値の1または2を設定してください。 後は、 Private Sub test_Click() ・・・ If フレーム1.Value = 1 Then '1(Aが選ばれている場合)の処理 ElseIf フレーム1.Value = 2 Then '2(Bが選ばれている場合)の処理 End If ・・・ End Sub で処理できます。 尚、選択が変更した時点での処理も、ボタン毎にもできますが、フレームの更新前処理(BeforeUpdate)、更新後処理(AfterUpdate)でも処理できます。 Private Sub フレーム1_AfterUpdate() MsgBox フレーム1.Value End Sub

smorgas030
質問者

お礼

回答ありがとうございます。 早速やってみたらできました。 丁寧な回答ありがとうございました。 勉強になりました。

関連するQ&A

  • データがないときにエラーメッセージを出したい

    クエリの結果をHTMLファイルで出力するようなAccessVBAを作成しました。クエリのデータがあれば問題ないのですが、 データがない場合にエラーメッセージを出そうと考えていますが、 うまくできません。どうしたらいいのでしょうか。 よろしくおねがいします。 ****************************************************** 作成したVBA ****************************************************** Private Sub test_Click() Dim fNAME As String fNAME = "c:\test.html " Open fNAME For Output As # Print #, "<html>" Print #, "<head>" Print #, "</head>" Print #, "<body>" Print #, "<table>" mySQL = "SELECT ……;" Set myRS = CurrentDb.OpenRecordset(mySQL) ****************************************************** ここに、クエリのデータがなければ、 エラーメッセージを出そうかと考えています。 ↓のようにしたらだめでした。 If mySQL <> False Then MsgBox "入力した日付のデータはありません。" End If ****************************************************** Do Print #, "<tr><td>" & myRS(1).Value & "</td></tr>" myRS.MoveNext If myRS.EOF Then Exit Do Loop Print #, "</table>" Print #, "</body>" Print #, "</html>" End Sub

  • ACCESSVBAで日付の表示を2007/12/31から2007年12月31日に変更したい

    ACCESSVBAでdate関数を使って、 ファイルを出力すると、 2007/12/31 のような表示になります。 2007年12月31日 の表示で出力させたいのですが、 どうしたらいいのでしょうか。 宜しくお願いします。 ***************作成したVBA*********** Private Sub test_Click() Dim fNAME As String fNAME = "c:\test.htm" Open fNAME For Output As #1 Print #1, "<html>" Print #1, "<head>" Print #1, "</head>" Print #1, "<body>" ****ここで日付を表示させる***** Print #1, "<p>" & Date & "</p>" … … Print #1, "</body>" Print #1, "</html>" Close #1 '閉じる End Sub

  • InputBox キャンセルボタンが押された時の処理

    こんばんは。 Sub test() Dim タイトル As String タイトル = InputBox("タイトルを入力してください。") If Cancel = True Then Exit Sub ’次のコード・・・ ’次のコード・・・ End Sub このコードを実行した時に 下記のダイアログが出てきて 右のキャンセルボタンを押すと、 「If Cancel = True Then Exit Sub」 でsubステートメントを抜けたいのですが 「Cancel」の部分が 「変数が定義されていません」とエラーになってしまいます。 Dim Cancel As Boolean を追加してキャンセルボタンを押しても TrueではなくFalseになってしまいます。 回避方法を教えてください。 よろしくお願いします。

  • EXCELでセルの変更をしたらマクロを実行

    このようなコードを作成しました。 Private Sub Worksheet_Change(ByVal Target As Range) If (Target.Address = "$D$3") Then ★ End If End Sub ★に MsgBox "変更したよ" といれるとちゃんと表示されます。 ですが、 If D9 = "テスト" Then MsgBox "テスト" End if としても何も起こりません。 Call KEISAN のように呼び出すようにしても何も起こりません。 どこがダメなのでしょうか? よろしくお願いします。

  • 元のプロシージャーを取得するプロパティ

    Sub test1() Call test2 End Sub Sub test2() If ?? Then MsgBox "test1から実行されたマクロです。" End If End Sub 上記のコードで どこから実行されたプロシージャ化を取得する方法はありますか? 現在は、 Dim bl_test1_yes As Boolean Sub test1() bl_test1_yes = True Call test2(bl_test1_yes) End Sub Sub test2(bl_test1_yes) If bl_test1_yes = True Then MsgBox "test1から実行されたマクロです。" End If End Sub としていますが、 元のプロシージャーを取得するプロパティがあれば教えてください。

  • 「:」を使えば、一行のコードにできるわけではない?

    「:」を使えば、一行のコードにできるわけではないのですか? ifステートメントを1行にしたいのですが Sub test() Dim a As String a = "aiu" If a Like "*i*" Then: Stop: End If End Sub これだと End If に対応する If ブロックがありません。 となってしまいます。 ちゃんと、 Sub test() Dim a As String a = "aiu" If a Like "*i*" Then Stop End If End Sub こうしないとダメですか? なぜ、:は使えないのですか? よろしくお願いします。

  • VB2008EEのラジオボタンのチェック無し

    VB2008EEのラジオボタンのチェック無し     4つにチェックを入れてしまうと、全ての変数に値が入ってしまい、ボタンクリック時にチェックが 入っていないのを含めて、batファイル4つとも実行されてしまいます。 チェックボックスだと、下記でチェックされていないもの値を変えられます。 If CheckBox1.CheckState = CheckState.Unchecked Then   aaa = "9" End If ラジオボタンでチェックされていない所の変数を変える事は出来るでしょうか? Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If (aaa = "1") Then Shell("cmd /c xxx.bat", AppWinStyle.NormalFocus, True) End If If (bbb = "2") Then Shell("cmd /c yyy.bat", AppWinStyle.NormalFocus, True) End If If (ccc = "3") Then Shell("cmd /c zzz.bat", AppWinStyle.NormalFocus, True) End If If (ddd = "4") Then Shell("cmd /c www.bat", AppWinStyle.NormalFocus, True) End If End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged aaa = "1" End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged bbb = "2" End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged ccc = "3" End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged ddd = "4" End Sub

  • VB2008EEのラジオボタンのチェック無し

    VB2008EEのラジオボタンのチェック無し     4つにチェックを入れてしまうと、全ての変数に値が入ってしまい、ボタンクリック時にチェックが 入っていないのを含めて、batファイル4つとも実行されてしまいます。 チェックボックスでも同じような記述をしていまして、下記の記述でチェックされていないものの値を変えられます。 If CheckBox1.CheckState = CheckState.Unchecked Then   aaa = "9" End If Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If (aaa = "1") Then Shell("cmd /c xxx.bat", AppWinStyle.NormalFocus, True) End If If (bbb = "2") Then Shell("cmd /c yyy.bat", AppWinStyle.NormalFocus, True) End If If (ccc = "3") Then Shell("cmd /c zzz.bat", AppWinStyle.NormalFocus, True) End If If (ddd = "4") Then Shell("cmd /c www.bat", AppWinStyle.NormalFocus, True) End If End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged aaa = "1" End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged bbb = "2" End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged ccc = "3" End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged ddd = "4" End Sub レベル低いといきなりラスボスは倒せないので、目先のミッションクリアが目的です。 応用は後々学んで行きます。 「ラジオボタンでチェックされていない所の変数を変える事は出来るでしょうか?」  

  • VB2008EEのラジオボタンのチェック無し

    VB2008EEのラジオボタンのチェック無し     4つにチェックを入れてしまうと、全ての変数に値が入ってしまい、ボタンクリック時にチェックが 入っていないのを含めて、batファイル4つとも実行されてしまいます。 チェックボックスでも同じような記述をしていまして、下記の記述でチェックされていないものの値を変えられます。 If CheckBox1.CheckState = CheckState.Unchecked Then   aaa = "9" End If Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If (aaa = "1") Then Shell("cmd /c xxx.bat", AppWinStyle.NormalFocus, True) End If If (bbb = "2") Then Shell("cmd /c yyy.bat", AppWinStyle.NormalFocus, True) End If If (ccc = "3") Then Shell("cmd /c zzz.bat", AppWinStyle.NormalFocus, True) End If If (ddd = "4") Then Shell("cmd /c www.bat", AppWinStyle.NormalFocus, True) End If End Sub Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged aaa = "1" End Sub Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged bbb = "2" End Sub Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged ccc = "3" End Sub Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged ddd = "4" End Sub レベル低いといきなりラスボスは倒せないので、目先のミッションクリアが目的です。 応用は後々学んで行きます。 「ラジオボタンでチェックされていない所の変数を変える事は出来るでしょうか?」

  • 印刷後のVBAの実行 (2)

    Private Sub Workbook_BeforePrint(Cancel As Boolean)   If ActiveSheet.Name = "Sheet1" Then     If Range("D6").Value = "" Then       Cancel = True       MsgBox ("名前を入力してください")       Range("D6").Select       Exit Sub     End If   Else     If ActiveSheet.Name = "Sheet2" Then       If Range("C11").Value = "" Then         Cancel = True         MsgBox ("受付時間を入力してください")         Range("C11").Select         Exit Sub       End If     Else              Exit Sub     End If   End If   ActiveSheet.Range("A70:Y70").Copy   If Worksheets("Sheet3").Range("A1").Value = "" Then     Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues   Else     Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _       Paste:=xlPasteValues   End If   Application.CutCopyMode = False   ActiveSheet.Range("A1").Select End Sub 先日、上記のコードを回答者の方から教えてもらい、とても助かっていますが sheet1のD5に「不要」という文字が入っていた場合、 sheet3への貼り付け(23~30行目の作業)をキャンセルして、最後にsheet1のA1を選択するようにはどの様にしたらいいでしょうか?

専門家に質問してみよう