VBA에 몇 가지 사용자 폼이 있습니다. 사용자가 텍스트 상자를 처음 클릭 (포커스를 변경) 할 때 내부의 텍스트가 선택되는 기능을 추가하고 싶습니다. 필자는 URL 모음을 처음 클릭 할 때 일부 회계 응용 프로그램 및 웹 브라우저에서이 기능을 보았습니다. 이는 본질적으로 사용자가 텍스트 필드를 즉시 덮어 쓸 수 있다는 것을 의미합니다. VBA에서 내가 어떻게 똑같이 할 수 있을지 궁금해하고 있었지만, 나는 아직 초보자입니다. 몇 가지 하위 트리거 (올바른 용어는 모르겠다.)를 보았지만 아무 것도 보지 못했습니다. 텍스트 상자를 클릭 할 때 하나를 찾았지만 필드를 클릭 할 때마다 텍스트가 계속 선택되는 것을 원하지 않습니다. 감사합니다. .Excel VBA Userform 포커스 변경 트리거
답변
넣어 당신의 텍스트 상자를 클릭하면
Dim checked As Boolean
Private Sub TextBox1_Change()
If checked = True Then
TextBox1.SelStart = 0
TextBox1.SelLength = 0
checked = True
End If
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
checked = False
End Sub
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If checked = False Then
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1)
checked = True
End If
End Sub
, 그것은 텍스트를 클릭하면, 그것은 unhightlight 및 수정 텍스트를 허용, 텍스트를 hightlight됩니다 텍스트 상자 이벤트에서이. 해당 텍스트 상자 바깥을 클릭하고 안에 들어가면 전체 텍스트가 다시 강조 표시됩니다.
꽤 좋은, lolz는 단지 두 줄이라고 믿을 수 없다; 그러나 두 번 클릭하면 선택 취소되지 않습니다. 텍스트 상자의 마지막 문자를 두 번 클릭하면 선택이 취소되지만 가운데를 두 번 클릭하면 선택이 취소되지 않습니다. 거기에 해결 방법이 있습니까? –
그냥 화살표 키를 사용하여 텍스트의 원하는 지점으로 이동하십시오. –
@pokemin_Man ikr은 당신과 나에게 의미가 있지만 다른 사람들에게는 이해가되지 않을 것입니다. 당신은 다른 사람들이 초기 마우스 클릭보다 더 많은 것을 작동하도록하기 위해 당신에게 외치는 소리를 지르게됩니다. 나는 엑셀이 이런 일을 할 수 있는지조차 모른다. 감사. –
지금까지 가지고있는 코드를 게시 할 수 있습니까? – PrestonM
죄송합니다.이 작업을 시작하는 방법을 모르겠습니다. Setfocus 명령이 표시되지만 IsItFocused는 표시되지 않습니다. 그리고 textbox1에 대한 DblClick 및 MouseDown 개인용 하위 항목이 표시되지만 Focused 또는 SingleClick에 대한 하위 항목이 표시되지 않습니다. 모든 제안은 위대한 것입니다 –