- ベストアンサー
Excel VBAでフォーカスを移動しない方法の続き
- 質問番号5013953の解決方法を紹介します。
- コンボボックスをExitで移動しなくすることはできますが、他の部分で不具合が生じる可能性があります。
- フォームにデータ入力中に中断するための終了コマンドボタンを作成しましたが、コードの影響で終了できない問題が発生しました。解決方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 いずれにしても、このコードで、ユーザーフォームが終了するとか言う意味ではありません。 >Private Sub 終了cmd_Click() >End >End Sub End は、Exit Sub とは似ていますが、サブルーチンの時に、終了してしまうステートメントです。 前回の質問 Private Sub [コンボボックス名1]_Exit(ByVal Cancel As MSForms.ReturnBoolean) If [コンボボックス名2] = "" Then ・ ・ 前回の質問は、 [コンボボックス名1] --> [コンボボックス名2] となっているので、そういうことから確認する手間を考えて、回答はしなかったのですが、同じ、Control でよいのなら、話は違ってきます。 >リストのソースを設定してあるコンボボックスから次のコンボボックスに移動する際、入力にエラーあればフォーカスを移動しないようにするコードはどのようにすればいいのですか? それに、これもよく分からなかったです。「入力にエラーがあれば」が、「空欄があれば」に変わっています。 '----------------------------------------------- Private Sub UserForm_Initialize() 終了cmd.TakeFocusOnClick = False '----- 設定-- End Sub Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If 終了cmd.TakeFocusOnClick = False Then If ComboBox1.Value = "" Then Cancel = True MsgBox "値がありません。", vbInformation, Me.Name End If End If End Sub Private Sub 終了cmd_Click() 終了cmd.TakeFocusOnClick = True Unload Me End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 終了cmd.TakeFocusOnClick = True End Sub '--------------------------------------------------- このようにすればよいのではないかと思います。
お礼
できました、ありがとうございました。 VBA初心者なのでこれからもよろしくお願いします。