i have simple userform, have textbox1 , textbox2. enter text in both of them. assume focus on (the cursor in) textbox2. when click on textbox1, want whole text in control highlighted (selected). use code:
private sub textbox1_enter() textbox1 .setfocus .selstart = 0 .sellength = len(.text) end msgbox "enter event fired" end sub there msgbox @ end loaded, means event works. however, text not highlighted. how fix this?
i use enter event , don't want use mousedown event, because need code work when textbox1 activated programatically, feel enter event best choice, it's fired in both cases! drawback of mousedown event is: when click second time on textbox1, not expect whole text highlighted anymore, because focus set on first click , not changed after clicked on same control second time; in case cursor act (not keep text marked).
update
when click once on textbox1, expect have result:
if clicked again, highlight removed , cursor placed in place clicked.
can't more simple guess...
private sub textbox1_mousedown(byval button integer, byval shift integer, _ byval x single, byval y single) textbox1 .selstart = 0 .sellength = len(.text) end end sub whether click on textbox or tab it, want. deselect text, use arrow keys.
explanation
if debug code see though have said .setfocus, focus not on textbox. .setfocus doesn't work in textbox1_enter() , need have focus rest of code work. , hence alternative...
alternative
you may version :) overcomes limitation of using mouse in textbox
dim boolenter boolean private sub textbox1_enter() boolenter = true end sub private sub textbox1_mousedown(byval button integer, byval shift integer, _ byval x single, byval y single) if boolenter = true textbox1 .selstart = 0 .sellength = len(.text) end boolenter = false end if end sub
Comments
Post a Comment