• 締切済み

VBA クイズ作成 

お目に留めていただきありがとうございます。 クイズを出題するフォームを作成しているのですが行き詰まってしまいました、、。 大変恐縮ではありますが、お知恵を拝借したく質問させていただきました。 フォームのイメージとしましては OptionButton1~5に問題を表示 解答ボタン(CommandButton1)をクリックすると正解か不正解かをMsgBoxに表示 (何も選択していない場合はエラーメッセージを表示) 次へボタン(CommandButton2)をクリックすると次の問題へと移り変わる 終了ボタン(CommandButton3)をクリックするとページを閉じる クイズ作成にあたりWorksheets(1)に以下のものを記入してあります。 No 問題 答1 答2 答3 答4 答5 正解 問1 如月   きらつき きさらぎ ききつき きさつき きさづき 2 問2 弥生   やよい やせい やしょう やいき よせい 1 問3 五月   ごがつ ごつき さつき いつき みつき 3 問4 神無月 かんなづき かんなつき かんなずき かみなずき かみなづき 1 問5 師走   しはしる しそう しっそう じそう しわす 5 A3~A7までNo B3~B7まで問題 C3~C7まで答1 D3~D7まで答2 E3~E7まで答3 F3~F7まで答4 G3~G7まで答5 H3~H7まで正解 私が進められたところは、以下のコードまでとなります。 Private Sub CommandButton1_Click() If OptionButton1 = False And OptionButton2 = False And OptionButton3 = False And OptionButton4 = False And OptionButton5 = False Then ret = MsgBox("答えを選択してください!!", 48, "注意") End If End Sub Private Sub UserForm_initialize() TextBox1 = Worksheets(1).Cells(3, 2) OptionButton1.Caption = Worksheets(1).Cells(3, 3) OptionButton2.Caption = Worksheets(1).Cells(3, 4) OptionButton3.Caption = Worksheets(1).Cells(3, 5) OptionButton4.Caption = Worksheets(1).Cells(3, 6) OptionButton5.Caption = Worksheets(1).Cells(3, 7) End Sub お力添えいただければ大変嬉しいです。よろしく御願い致します。

みんなの回答

  • y_shimizu
  • ベストアンサー率41% (27/65)
回答No.1

何に行き詰まったのですか?

関連するQ&A

  • マクロのボタン名設定方法

    お世話になります。 マクロのボタン名を 別のファイルのセルの値に設定したいとおもい プログラムを組んでいるのですが、うまくいきません。 CommandButton1をクリックしCommandButton2へ表示 Private Sub CommandButton1_Click() Workbooks("c:\file.xls").Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet1").CommandButton2.Caption End Sub や Private Sub CommandButton1_Click() Worksheets("Sheet1").CommandButton2.Caption = _ Application.ExecuteExcel4Macro("'C:\[file.xls]Sheet1'!" & Cells(1,1 ).Address(, , xlR1C1)) End Sub などといろいろ試しているのですが、 「インデックスが有効範囲にありません」 とエラーがかえってきます。 そもそもボタン等のプロパティにセットしようとしているのがいけないのでしょうか・・・。 どなたかご教授お願いします。

  • Excel VBA OptionButton

    Excel VBAのOptionButtonについてお伺いします。 現在、Excel2007にてユーザーフォームを作成しております。 シート上の文字によって、ユーザーフォーム上のオプションボタンの ON/OFFを切り替えたいのですがうまく動作しません。 具体的には・・・・ ユーザフォーム上のCommandButton1を押下すると、 sheet2のE22セルの文字がTRUEの場合、ユーザーフォーム上の OptionButton1がON・OptionButton2がOFF sheet2のE22セルの文字がFALSEの場合、ユーザーフォーム上の OptionButton1がOFF・OptionButton2がON 以下のように考えていたのですが、動作しません。 ------------------------------ Private Sub CommandButton1_Click() If sheet2.Range("E22").Value = "TRUE" Then OptionButton1.Value = True ElseIf sheet2.Range("E22").Value = "FALSE" Then OptionButton2.Value = True End If ------------------------------ お知恵お借りしたく存じます。 宜しくお願い致します。

  • VBAのEXITでのエラー

    エクセルのフォームで入力したデータをシートに保存しようとしています。 ID番号でシートからvlookupで検索を行い、データがあれば自動で個人情報を入力します。マウス操作無しで連続入力したいので、一度登録ボタンをクリックし、シート最下行に登録したら、その後タブをIDテキストボックスにフォーカスします。Private Sub TextBoxID_Exit(ByVal Cancel As MSForms.ReturnBoolean)にコマンドを記入しているのですが、終了する際にテキストボックスに値がないためエラーが発生します。どうすればエラー回避できるでしょうか?フォームの画像とコマンドの一部を下記に記入します。よろしくお願いします。 フォーカスがIDにある状態で終了ボタンを押すとexitプロシージャが発生するためのエラーだと思うんですが、どうでしょうか? うまく説明できていないかもしれませんがよろしくお願いします。 ***************************************************************** Private Sub TextBoxID_Exit(ByVal Cancel As MSForms.ReturnBoolean) ID = TextBoxID.Text 'テキストボックスIDの値を取得 On Error GoTo ErrHdl '下記コマンドvlookupがエラーの場合ErrHdl処理する Worksheets("data").Activate 'dataシートをアクティブにする With ActiveSheet TextBoxシメイ.Value = Application.WorksheetFunction.VLookup(ID, Range("b2:E65536"), 2, False) TextBox誕生日.Value = Application.WorksheetFunction.VLookup(ID, Range("b2:E65536"), 3, False) sex = Application.WorksheetFunction.VLookup(ID, Range("b2:E65536"), 4, False) If sex = "M" Then OptionButton男.Value = True Else OptionButton女.Value = True End If TextBox体重.SetFocus End With Exit Sub ErrHdl: 'IDがなかった場合の処理 If TextBoxシメイ.Value = "" Then MsgBox "新規です" Exit Sub End If End Sub ************************************************************************************** Private Sub CommandButton登録_Click() With Worksheets("data") lastrow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 '最終行にデータを追加する .Cells(lastrow, 1).Value = TextBox撮影日.Text '最終行の1列目の値 .Cells(lastrow, 2).Value = TextBoxID.Text .Cells(lastrow, 3).Value = TextBoxシメイ.Text .Cells(lastrow, 4).Value = TextBox誕生日.Text .Cells(lastrow, 5).Value = sex .Cells(lastrow, 6).Value = TextBox体重.Text .Cells(lastrow, 7).Value = ComboBox撮影区分.Text .Cells(lastrow, 8).Value = ComboBox撮影部位.Text .Cells(lastrow, 9).Value = TextBoxFOV.Text .Cells(lastrow, 10).Value = TextBox寝台高.Text .Cells(lastrow, 11).Value = TextBoxDLP.Text .Cells(lastrow, 12).Value = TextBoxCTDI.Text .Cells(lastrow, 13).Value = TextBox電圧.Text .Cells(lastrow, 14).Value = TextBoxmAs.Text End With 'TextBox撮影日.Text = "" TextBoxID.Text = "" TextBoxシメイ.Text = "" TextBox誕生日.Text = "" OptionButton男.Value = False OptionButton女.Value = False TextBox体重.Text = "" ComboBox撮影区分.Text = "" ComboBox撮影部位.Text = "" TextBoxFOV.Text = "" TextBox寝台高.Text = "" TextBoxDLP.Text = "" TextBoxCTDI.Text = "" TextBox電圧.Text = "" TextBoxmAs.Text = "" Me.ComboBox撮影区分.Text = 区分 '初期値を再設定(この変数は他で宣言済み) Me.ComboBox撮影部位.Text = 部位 Me.TextBox電圧.Text = 電圧 TextBoxID.SetFocus 'TextBoxIDに移動 End Sub ***************************************************************************** Private Sub CommandButton終了_Click() Unload UserForm2 'フォームを消去 End Sub **********************************************************************************

  • VBA 変数について

    VBA初心者でございます。 VBAでgrpという変数を設定し、それをキーにしてオートフィルタをしたいです。 以下のコードではエラーがでてしまうのは、なぜでしょうか? どうぞ宜しくお願いいたします。 Sub 絞り込み2() Dim grp Set grp = Worksheets("リスト").Cells(3, 2) Worksheets("マスタ0701").AutoFilterMode = False With Worksheets("マスタ0701").Range(Cells(3, "B"), Cells(Rows.Count, "CK").End(xlUp)) .AutoFilter Field:=13, Criteria1:=grp '.CurrentRegion.Select Range(Cells(3, "B"), Cells(Rows.Count, "CK").End(xlUp)).SpecialCells(xlVisible).Copy Worksheets("検索結果").Range("A1") '.AutoFilter End With End Sub

  • VBA Next For でのコピペについて

    EXCEL VBA初心者です。 AシートEW44からGD44までをコピーしてBというシートの最終行へコピーしたいです。 今下記のように組んでいるのですが、うまく作動しません。 Private Sub CommandButton1_Click() Dim i As Integer For i = 153 To 186 row1 = Worksheets("B").Cells(Rows.Count, 27).End(xlUp).Row Worksheets("A").Cells(i, 44).Value = Worksheets("B").Cells(row1 + 1, 27).Value Next i End Sub アドバイスいただけませんでしょうか。

  • 繰り返し処理について

    設問をA列に、回答欄をB列に設定した10問程の 正誤問題の一覧を作ろうとしています。 (B1に問題文、B2に正または誤で回答) セルを選択時にオプションボタンが出るようにし、 選択したものがセルに入力されるように プログラムを組みました。 現在入力しているコードは以下のものになります。 ●User Form Private Sub CommandButton1_Click() If OptionButton1.Value = True Then Worksheets(1).Range("B2").Value = OptionButton1.Caption ElseIf OptionButton2.Value = True Then Worksheets(1).Range("B2").Value = OptionButton2.Caption End If End Sub ●Sheet1 Private Sub Worksheet_SelectionChange(ByVal Target As Range) UserForm1.Show End Sub これと同じことがB3~B11でも繰り返されるようにするには どのようにコードを入力すれば良いでしょうか。 (Do~LoopやFor each~Nextを使用するのでしょうか?) また、現在はどのセルを選択してもオプションボタンが出るように なっているのですが、B2を選択したときにだけ出すようにすることは 可能でしょうか? 初歩的な質問かもしれませんが、 全く検討がつかないのでご回答お願い致します。

  • VBA 初心者

    sheet1から、sheet2データを検索して抽出する練習をしているのですがerror"1104"が表示されます、なぜなのか分からないので投稿しました、よろしくお願いします。 sub test() dim sh1 as worksheets dim sh2 as worksheets dim  i  as  integer set sh1 = thisworkbook.worksheets("sheet1!") set sh2 = thisworkbook.worksheets("sheet2!") b = userform1.textbox1 for i = 1 to 10 sh1 .cells(i,2) = b b = b+1 x = sh1.cells(1,2) sh1.cells(i,3).value = worksheetfunction.vlookup(x,sh2.range("a1:d500"),2,false) next i end sub

  • VBAで修正ボタンを作成

    先ほどは登録ボタンを作成したのでが、 修正ボタンもあれば便利だと思い作りたいのですが 一向にできません。 一覧表より、番号を検索して一致するセルの場所に 上書き?保存をするようにしたいのですが どのようにすればよいでしょうか? 先ほどから新たに訂正を加えたのですが、 やはりダメでした。 Private Sub CommandButton2_Click() '修正ボタン Dim bk As Workbook Dim sh1 As Worksheet Dim sh2 As Worksheet Dim cnt1 As Long Set bk = ThisWorkbook Set sh1 = bk.Worksheets("現場登録検索") Set sh2 = bk.Worksheets("一覧") cnt1 = 6 'マッチ Range("F2").Select n = ActiveCell.FormulaR1C1 = "=MATCH(RC[-1],一覧!C[-5],0)" cnt1 = n '送り方 sh2.Cells(n, 22).Value = sh1.Cells(4, 3).Value '封筒 sh2.Cells(n, 23).Value = sh1.Cells(5, 3).Value MsgBox "修正できました。" End Sub よろしくお願い致します。

  • うまくVBが組めません

    会社でエクセルを使ってデータをまとめているのですがVBのユーザーフォームで作ろうとしています。今困っていることはoptionbuttonを4個使い選択式にし、選択したら「OK」buttonを押すことで各optionbuttonに対応したsheetへ飛ぶようにしたいのですがうまくいきません。 現状ですが Private Sub CommandButton1_Click() dim str as string str=optionbutton1.caption select case str case "****" sheets("1234").select ・    ・    ・ end select End Sub としています。 根本的に違うかもしれないので指摘してください。 ちなみに3日前に始めてVBを教えてもらいました。

  • Excel VBA オプションボタンについて

    こんばんは オプションボタンが5つあり、 登録ボタンが1つあるユーザーフォームを作りました。 このオプションにチェックを入れずに登録ボタンを押したときに 「必ず選択してください。」とメッセージを表示し、再度入力させるようにしたいのですが、どうしたらよいのでしょうか。 Excelのバージョンは2003です。 調べたところ (1)で動きそうだ。ということが判ったのですがチェックを入れ値がtrueになるとエラーが発生して止まってしまいます。(理由がわかりません) Private Sub commandbutton2_click() Dim opt As ControlFormat, flg As Boolean flg = False For Each opt In frame1.Controls If opt.Value = True Then '←ここの行でtrueだった場合のエラーが発生してしまう。 flg = True Selection.Value = opt.Caption End If Next Unload userform1 End Sub (2)この方法で何とか動いたのですが、初めの方に書いたとおり、オプションボタンが選択されずに登録ボタンが押された場合、チェックするように促すメッセージを表示する方法がわかりません。また、できればユーザーホームの×ボタンを押せなくする方法もしくは、閉じられた場合にマクロを抜けるようにするにはどうしたらよいのでしょうか。宜しくお願い致します。 Private Sub commandbutton1_click() Dim i As Integer For i = 1 To 5 If Me.Controls("optionbutton" & i).Value = True Then Selection.Value = Me.Controls("optionbutton" & i).Caption End If Next i Unload userform1 End Sub