アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問番号:5013953でフォーカスを移動しない方法を質問し、解決しました続きの質問です。

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ComboBox1.Value = "" Then
MsgBox "値が不正です。", vbInformation, "フォーム名"
Cancel = True
End If
End Sub

この場合、コンボボックスをExitで移動しなくしたまでは良かったのですが、
これによって他の部分で不具合が生じたので再度質問させてください。。

フォームにデータを入力中に中断する必要が出た場合、コマンドボタンで[終了]をつくったのです。

Private Sub 終了cmd_Click()
End
End Sub

このコードでは先のコードの影響で終了することができないのです。
これを解決する方法を教えてください。

A 回答 (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


'---------------------------------------------------

このようにすればよいのではないかと思います。
    • good
    • 0
この回答へのお礼

できました、ありがとうございました。

VBA初心者なのでこれからもよろしくお願いします。

お礼日時:2009/06/08 17:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています