2017-11-15 11 views
0

작동하지 않습니다 잘못된 항목이 있으면 메시지가 팝업되고 사용자가 무언가를 입력하도록 초대하는 textbox의 텍스트를 선택해야합니다. 나는 그것을 할 다음 코드를 사용엑셀 VBA 텍스트 상자 setFocus void 현재 내가 <code>textbox</code>과 <code>Excel</code><code>UserForm</code>을 가지고 있고 나는 <code>keyDown</code> 이벤트 후 (강조) 내에서 텍스트를 선택합니다

문제는 setFocus가 제대로 작동하지 않습니다, setFocus가 제안 다른 이벤트 see this discussion

솔루션의 일련의 트리거 때문에이 있다는 것이다

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

포커스가 다른 컨트롤로 이동하지 않도록 DoCmd.CancelEvent 또는 Cancel = True을 포함하는 것이 좋습니다. 그러나이 명령은 Excel에서 작동하지 않는 것이 문제입니다. 누군가 제게 해결책을 가르쳐 줄 수 있습니까?

+0

문제를 재현 할 수 있도록 충분한 코드를 제공해주십시오. (나는 당신이'keyDown' 이벤트에 대한 답변에 대한 코멘트에 주목했지만 질문에 아무것도 언급하지 않았습니다.이 코드는'txtbox_add_folder_KeyDown' 이벤트에 있습니까? 아니면'txtbox_add_folder_Change' 이벤트에 있습니까? 아니면 'txtbox_add_folder_Exit' 이벤트 또는 어디서?) – YowE3K

+0

TBH 단지'Enter' 이벤트에서 코드를 사용하고자하는 것처럼 들립니다. 그것은 "나는 텍스트 상자가있는 UserForm을 가지고있어 최종 사용자가 무엇을 채울 지 알 수 있도록 텍스트 (강조 표시) 내에서 텍스트를 선택하고 싶습니다."라는 만족 스러울 것 같습니다. 요구 사항. (물론'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"