2016-03-23 9 views
0

メッセージボックスの答えが返された後、ユーザーはComboBoxの 'aceCount'に戻るようにします。しかし、それはその行全体を飛び越えているようです。以下のコードでは、「コード作業」と「フォーカス後」という2つのメッセージボックスがあります。私はそれがその領域のコードを読んでいることを知っているので、それは文字通りsetfocus部分を無視しています。私はできるすべての記事を読んで、他の質問のために複数のソリューションを試してみました。無駄です。また、メッセージボックスの後のフォームのANYTHINGにもフォーカスしません。私はテキストボックスとコンボボックスで試しました。MsgBoxの後、VBAはsetfocusをComboBoxに無視します

編集:必要なコンボボックスにsetfocusされているようですが、下に太字で表示され、コードを実行します。ユーザーに再送信の機会を与えるものではありません。

Private Sub SubmitButton_Click() 
'Calls all necessary subs to perform required actions. If you add a sub, you  will have to call it here if you want it to perform when you submit the form. 
'If you have requested any number of HA Oracle servers, checks also if ACE and F5 are empty: 
    If Me.oracleCount.ListIndex > 0 Then 

'If Ace and F5 are empty, MessageBox requesting review. 
    If aceCount.Value = 0 And F5Count.Value = 0 Then 
     If MsgBox("You have requested a HA Oracle server, but no Ace or F5. Do you need ACE or F5?", vbYesNo + vbQuestion, "ACE or F5?") = vbYes Then 
'If chooses yes, goes back to form to allow user to input data 
    Cancel = True 
    MsgBox "code working" 
    UserForm1.aceCount.SelStart = 0 
    MsgBox "after focus" 
'If chooses no, submits code as normal 
     Else 

     Call EnterData 
     Call HideSheets 
     Unload Me 

    **End If** 
'If value in either Ace or F5, submits code as normal 
    ElseIf (Me.aceCount.Value <> 0 Or Me.F5Count.Value <> 0) Then 
     Call EnterData 
     Call HideSheets 
     Unload Me 

    End If 
    Else 
    End If 
    Call EnterData 
    Call HideSheets 
    Unload Me 

End Subの

+0

を使用することができます... –

+0

うん、あなたは正しいです。たくさんのことをしようとすると、間違って行が削除されてしまったと思います。ただし、コードが以下の場合でも、まだフォーカスはありません。 「はい選択した場合、入力されたデータにユーザーが 『フォーカスの後に』 = 0 MsgBoxに UserForm1.aceCount.SetFocus UserForm1.aceCount.SelStart 『ワーキングコード』 =真 のMsgBoxをキャンセル できるように形成するために戻っ」の場合は、選択したノー、正常にコードを提出する – aoman49

答えて

0

あなたはSetFocusを使用しないでください。 UserForm1.aceCount.SelStart = 0行は、UserForm1.aceCountにフォーカスを設定しません。そのコントロールにフォーカスを設定する場合は、UserForm1.aceCount.SetFocusと記述してください。

UserForm1では、あなたの現在のフォームのサブフォームである場合、あなたは何にフォーカスを設定されている場合、私は表示されません

UserForm1.Form.aceCount.SetFocus 
UserForm1.SetFocus 
+0

あなたと@Macro Manの両方が正解です。コードを何回も編集するには、その行を削除しておく必要があります。しかし、私があなたの解決策を試すときでさえ(前に何度もあったように)、それは機能しません。変更を促す最初のメッセージボックスを表示し、 'code working'メッセージボックスを表示し、setfocusをスキップし、 'focus after'メッセージボックスを表示します。フォームを閉じます。そのポイントの後に必要なコードを実行しますが、問題はありません。 – aoman49

関連する問題