2017-11-15 16 views
0

ExcelUserFormtextboxがあり、keyDownイベントの後に(ハイライト表示)テキストを選択したいと思います。エンドユーザーが入力できる内容にはいくつかの制限があります。間違った入力があった場合、メッセージがポップアップし、ユーザーに何かを入力させるように促すテキストが選択されます。問題はsetFocusが正しく動作しないということであるExcel vbaテキストボックスsetfocusが機能しない

Me.txtbox_add_folder.SetFocus 
Me.txtbox_add_folder.SelStart = 0 
Me.txtbox_add_folder.SelLength = Len(Me.txtbox_add_folder.Text) 

、およびsetFocusは他のイベントsee this discussion

で提案された解決策のシリーズをトリガーするためには、それはだと思える:私はそれを行うには、次のコードを使用しますフォーカスが別のコントロールに移動しないように、DoCmd.CancelEventまたはCancel = Trueを含めることですが、問題はこれらのコマンドがExcelでは機能しないということです。誰かが解決策に向かって私を指摘できますか?

+0

問題を再現できるように、十分なコードを入力してください。 (私は、あなたが 'keyDown'イベントに言及した答えにコメントしていましたが、あなたの質問には何も言及していませんでした。 'txtbox_add_folder_Exit'イベント?あるいはどこですか?) – YowE3K

+0

TBHこれは' Enter'イベントであなたのコードを使いたいと思うようです。それはあなたの満足しているようです "私は、テキストボックスを持つExcelフォームを持っていると私は(ハイライト)内のテキストを選択して、エンドユーザーが何を満たすことができるようにしたい。要件。 (もちろん、 'SetFocus'文は必要ありません) – YowE3K

+0

私はいくつかの詳細を追加しました。実際、このコードは 'keyDown'イベントの中にあり、このイベントの終わりにフォーカスは常に失われ、別のコントロールに移されます。 – GigaByte123

答えて

0

最後に解決策が見つかりました。実際には、イベントの後に自動的にフォーカスが失われたので、これを避けるには、プロパティのTabStopパラメータをオフにする必要があります。

0
Application.enableevents = false 
Me.txtbox_add_folder.SetFocus 
Me.txtbox_add_folder.SelStart = 0 
Me.txtbox_add_folder.SelLength = Len(Me.txtbox_add_folder.Text) 
Application.enableevents = true 
+0

私はあなたの解決策を試しましたが、フォーカスは再び失われ、別のコントロールに移されました。 'keyDown'イベントは最終的にフォーカスを別のコントロールに転送するようです – GigaByte123

0

このテクニックは少しハッキリですが、これまで私のために働いていました。それは、テキストボックスにカーソルを置き、Ctrl + Aコマンド(すべて選択)を実行します。このコマンドは、そのテキストボックス内のテキストを強調表示します。

Me.txtbox_add_folder.SetFocus 
SendKeys "^A" 
関連する問題