Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Casanmaner,
Ciao Norman,
dicevo di comportamenti strani della tastiera con l'uso di SendKeys.
Ed ecco infatti che alternativamente entrando ed uscendo dalle combo si attiva o disattiva il tastierino numerico :)
Maledetto SendKeys!!! :D :D :D
Ebbene, butta via il metodo SendKeys, ingrato!
Il problema dell'attivazione/disattivazione del tasterino numerico potrebbe essere
gestito utilizzando delle chiamate API.
Comunque, credo che sia di gran luogo preferibile affrontare i problemi alla radice. Pertanto, prova a sostituire il tuo codice nel modulo di codice della Userform con la seguente versione che, a me, risolve il tuoi problemi originari del non funzionamento del comando Dropdown e non tocca lo stato NumLock:
'=========>>
Option Explicit
Dim ArrayClienti() As Variant
Dim ArrayCausali() As Variant
'--------->>
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
KeyCode = 0
ComboBox2.SetFocus
ComboBox2.DropDown
End If
End Sub
'--------->>
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
If Shift = 0 Then
TextBox3.SetFocus
ElseIf Shift = 1 Then
ComboBox1.SetFocus
ComboBox1.DropDown
End If
End If
End Sub
'--------->>
Private Sub ComboBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
If KeyCode = vbKeyTab Then
KeyCode = 0
ComboBox1.SetFocus
ComboBox1.DropDown
End If
End Sub
'--------->>
Private Sub CheckBox2_Click()
TextBox4.SetFocus
End Sub
'--------->>
Private Sub CommandButton2_Click()
Unload Me
End Sub
'--------->>
Private Sub UserForm_Initialize()
Const iMaxListRows As Long = 30
With Me
With .ComboBox1
.AddItem "CLIENTE A"
.AddItem "CLIENTE B"
.AddItem "CLIENTE C"
.MatchEntry = fmMatchEntryComplete
.ListRows = Application.Min(.ListCount, iMaxListRows)
End With
With .ComboBox2
.AddItem "ATTIVITÀ 1"
.AddItem "ATTIVITÀ 2"
.AddItem "ATTIVITÀ 3"
.MatchEntry = fmMatchEntryComplete
.ListRows = Application.Min(.ListCount, iMaxListRows)
End With
End With
End Sub
'--------->>
Private Sub ComboBox1_Enter()
With ComboBox1
.DropDown
End With
End Sub
'--------->>
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.ComboBox1
If .Value <> "" Then
If .MatchFound = False Then Cancel = True: Exit Sub
End If
End With
End Sub
'--------->>
Private Sub ComboBox2_Enter()
With ComboBox2
.DropDown
End With
End Sub
'--------->>
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.ComboBox2
If .Value <> "" Then
If .MatchFound = False Then Cancel = True
End If
End With
End Sub
'<<=========
===
Regards,
Norman