Focus on combobox

A

atkscott

Does anyone know how to test, in VBA, if a combobox on a sheet has the focus or not?
 
T

Tom Ogilvy

If from the control toolbox toolbar, have you tried using the GotFocus and
Lostfocus events?

--
Regards,
Tom Ogilvy


atkscott said:
Does anyone know how to test, in VBA, if a combobox on a sheet has the
focus or not?
 
S

Scott Harmala

Tom,
The root of my problem is that when a user clicks on the combobox, focus
is transfered and the gotfocus event is triggered. No problem there. If
then the user clicks on the combobox and selects the same list choice,
NO event is triggered. The control already has focus, focus is
mantained, value hasn't changed so there's no change event and for some
reason no click event is triggered. A code condition that CAN follow
after this condition attemts to unprotect this locked sheet.

The unprotect code fails.

Sheets("Main").Unprotect (Sheets("Data").Range("G3"))

I need to detect this condition and if it exists, temporarily move focus
off it and after the unprotect code block runs, return it.


Thanks,
Scott

*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
 
O

onedaywhen

Set a flag in the _GotFocus event, reset it in the _LostFocus event.
Then, to determine whether the control has focus, check the value of
the flag.

As an aside, just for interest, this code determines that the user
changed the value, even if they select the same list choice (also:
consider when the user changes the combo using the keyboard):

Option Explicit

Private Enum owComboStateEnum
owComboStateNormal = 1
owComboStateIsDropping = 2
owComboStateDropped = 3
End Enum

Private m_lngComboState As owComboStateEnum

Private Sub ComboBox1_DropButtonClick()
ComboState = owComboStateIsDropping
End Sub

Private Sub ComboBox1_LostFocus()
ComboState = owComboStateNormal
End Sub

Private Sub ComboBox1_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Select Case ComboState
Case owComboStateIsDropping
ComboState = owComboStateDropped
Case owComboStateDropped
Debug.Print "Success: ComboBox1 will change from '" & _
ComboBox1.Value & "' to unknown."
ComboState = owComboStateNormal
End Select
End Sub

Private Property Let ComboState(ByVal NewValue As owComboStateEnum)
m_lngComboState = NewValue
End Property

Private Property Get ComboState() As owComboStateEnum
ComboState = m_lngComboState
End Property
 
A

atkscott

Funning things happen when you get so buried in your code...Thanks
onedaywhen for pointing out the obvious :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top