- ベストアンサー
【Excel】フォームを使ったマクロ記述について
教えて下さい! マクロ初心者ですが、ユーザーフォームを使って以下のような対話型マクロに挑戦しています。 ワークシート内にあるフォームボタンをクリックすると下の内容を聞いてくるチェックボックスが出てきます。 「比較方法を選択して下さい。」 ・担当者別 ・箇所別 ”担当者別”にチェックを入れ、OKボタンを押すと”担当者選択”というリストボックスが出てきます。 ”箇所別”にチェックを入れ、OKボタンを押すと”箇所選択”というリストボックスが出てきます。 どちらにもチェックを入れずにOKボタンを押した場合、”エラー”というOKボタンのみのフォームが出て、OKボタンを押すと再度チェックボックスの画面に戻ります。 リストボックスやフォームは完成していて、いくつか「IF」や「Select Case」を使って行ってみたのですがうまくいきません。 困っています。 教えて下さい!!
- みんなの回答 (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 -------------------------------------------- これでお分かりのように、チェックボックスの場合は、両方とも選択可能ですので、そのチェックも要りますね。 どちらか一方を選択可能にする場合は、既に回答にありますように、オプションボタンを使います。 以上です。
その他の回答 (2)
- triumph405
- ベストアンサー率32% (50/153)
回答ではないのですが、アドバイスです。 そのチェックボックスをオプションボタンにしてみてはいかがでしょうか? チェック漏れがなくなります。 あと、どこら辺がうまくいってないのかを教えていただければ 何らかの回答ができるかもしれません。
補足
オプションボタンですか…なるほど。 ちなみに本当に初心者で学習しながら作成している状態なのでうまくご説明出来なくて本当すいません。 以下のような記述で行ってみたのですが。 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が必要なんでしょう?
- triumph405
- ベストアンサー率32% (50/153)
回答ではないのですが、アドバイスです。 そのチェックボックスをラジオボタンにしてみてはいかがでしょうか? チェック漏れがなくなります。 あと、どこら辺がうまくいってないのかを教えていただければ 何らかの回答ができるかもしれません。
お礼
なるほど!こんなに簡単に出来ちゃうんですね。 大変勉強になりました◎ 本当にありがとうございます。