• ベストアンサー

【Excel】フォームを使ったマクロ記述について

教えて下さい! マクロ初心者ですが、ユーザーフォームを使って以下のような対話型マクロに挑戦しています。 ワークシート内にあるフォームボタンをクリックすると下の内容を聞いてくるチェックボックスが出てきます。 「比較方法を選択して下さい。」  ・担当者別  ・箇所別 ”担当者別”にチェックを入れ、OKボタンを押すと”担当者選択”というリストボックスが出てきます。 ”箇所別”にチェックを入れ、OKボタンを押すと”箇所選択”というリストボックスが出てきます。 どちらにもチェックを入れずにOKボタンを押した場合、”エラー”というOKボタンのみのフォームが出て、OKボタンを押すと再度チェックボックスの画面に戻ります。 リストボックスやフォームは完成していて、いくつか「IF」や「Select Case」を使って行ってみたのですがうまくいきません。 困っています。 教えて下さい!!

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

こんにちは。 End if のエラーですが、IFとEnd IFはペアでないといけませんので、IfとEndIfの数を数えれば分りますね。 で、提示のコードと同じことをやるサンプルをちょとアップしておきます。 -------------------------------------------- チェックボックスを使った場合 -------------------------------------------- Private Sub CommandButton1_Click()  If CheckBox1 = False And CheckBox2 = False Then    エラー.Show  ElseIf CheckBox1 = False And CheckBox2 = True Then    対応箇所.Show  ElseIf CheckBox1 = True And CheckBox2 = False Then    担当者選択.Show  Else    MsgBox "両方選択されています"  End If End Sub ----------------------------------------------- オプションボタンを使った場合 ---------------------------------- Private Sub CommandButton1_Click()  If OptionButton1 = True Then    担当者選択.Show  ElseIf OptionButton2 = True Then    対応箇所.Show  Else    エラー.Show  End If End Sub -------------------------------------------- これでお分かりのように、チェックボックスの場合は、両方とも選択可能ですので、そのチェックも要りますね。 どちらか一方を選択可能にする場合は、既に回答にありますように、オプションボタンを使います。 以上です。

froma_a
質問者

お礼

なるほど!こんなに簡単に出来ちゃうんですね。 大変勉強になりました◎ 本当にありがとうございます。

その他の回答 (2)

回答No.2

回答ではないのですが、アドバイスです。 そのチェックボックスをオプションボタンにしてみてはいかがでしょうか? チェック漏れがなくなります。 あと、どこら辺がうまくいってないのかを教えていただければ 何らかの回答ができるかもしれません。

froma_a
質問者

補足

オプションボタンですか…なるほど。 ちなみに本当に初心者で学習しながら作成している状態なのでうまくご説明出来なくて本当すいません。 以下のような記述で行ってみたのですが。 Private Sub CommandButton1_Click() If CheckBox1 = False Then '両方空欄だったらエラーを表示させる If CheckBox2 = False Then Else エラー.Show End If If CheckBox1 = False Then If CheckBox2 = True Then '箇所別が選択されていたら対応箇所を表示させる Else 対応箇所.Show End If If CheckBox1 = True Then '担当者別が選択されていたら担当者選択を表示させる If CheckBox2 = False Then Else 担当者選択.Show End If End If End Sub 「Ifブロックに対応するEndIfがありません」と表示されてしまいます。 これってどこのEndIfが必要なんでしょう?

回答No.1

回答ではないのですが、アドバイスです。 そのチェックボックスをラジオボタンにしてみてはいかがでしょうか? チェック漏れがなくなります。 あと、どこら辺がうまくいってないのかを教えていただければ 何らかの回答ができるかもしれません。