View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
atkscott atkscott is offline
external usenet poster
 
Posts: 2
Default Focus on combobox

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

(onedaywhen) wrote in message . com...
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


Scott Harmala wrote in message ...
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!