VBA code inkorten? enter in comboboxen

Status
Niet open voor verdere reacties.

markwat

Gebruiker
Lid geworden
11 mrt 2011
Berichten
301
is het mogelijk om de ComboBoxen in 1 formule te plaatsen? 1 t/m 91

Code:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox2.Activate
 End If
 End If
End Sub
Private Sub ComboBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox3.Activate
 End If
 End If
End Sub
Private Sub ComboBox3_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox4.Activate
 End If
 End If
End Sub
Private Sub ComboBox4_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox5.Activate
 End If
 End If
End Sub
Private Sub ComboBox5_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox6.Activate
 End If
 End If
End Sub
Private Sub ComboBox6_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox7.Activate
 End If
 End If
End Sub
Private Sub ComboBox7_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox8.Activate
 End If
 End If
End Sub
Private Sub ComboBox8_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 If Shift = 1 Then
 Else
 If (KeyCode = 13) Or (KeyCode = 9) Then
 ComboBox9.Activate
 End If
 End If
End Sub
 
Je zult toch elke combobox apart moeten triggeren dus heel veel zal je er niet mee opschieten. Maar je kunt de acties wel een stuk simpeler maken.

Code:
Private Sub ComboBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    CheckComboBox 3
End Sub

Code:
Private Function CheckComboBox(Combo As Integer, ByVal KeyCode As Integer, ByVal Shift As Integer)
    If Not Shift = 1 Then
    If (KeyCode = 13) Or (KeyCode = 9) Then Me("ComboBox" & Combo).Activate
    End If
End Function
 
Dit heb ik er uiteindelijk van gemaakt Check lukte niet helemaal.

Code:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ComboBox2.Activate
End Sub
 
Zet het in een klassenmodule.
Code voor de klassenmodule genaamd "Klasse1".
Code:
Option Explicit
Public WithEvents ComboBoxEvents As MSForms.ComboBox


Private Sub ComboBoxEvents_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If Not Shift = 1 Then
       If KeyCode = 13 Or KeyCode = 9 Then
     ComboBoxEvents.SetFocus
   End If
End If
End Sub

Code in je Userform.
Code:
Option Explicit
Public ComboCollection As New Collection


Private Sub UserForm_Initialize()
Dim ctl As Control
    For Each ctl In Controls
        If TypeOf ctl Is MSForms.ComboBox Then
            ComboCollection.Add New Klasse1, ctl.Name
            Set ComboCollection.Item(ctl.Name).ComboBoxEvents = ctl
        End If
    Next
    
End Sub


Private Sub UserForm_Terminate()
 Set ComboCollection = Nothing
End Sub
 
Beste Harry

Het is niet in een UserForm maar in een sheet genaamd InvoerSheet.
 
Ik heb toch deze codes genomen maar hij springt bij elke toets aanraking naar de volgende box.. en graag wil ik dit bij enter alleen.
Code:
Private Function ComboBox(Combo As Integer, ByVal KeyCode As Integer, ByVal Shift As Integer)
    If Not Shift = 1 Then
    If (KeyCode = 13) Or (KeyCode = 9) Then Me("ComboBox" & Combo).Activate
    End If
End Function

Code:
Private Sub ComboBox91_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ComboBox1.Activate
End Sub
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ComboBox2.Activate
End Sub
Private Sub ComboBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ComboBox3.Activate
End Sub
 
Lijkt me vrij logisch als ik naar de onderste code kijk.
Het komt nl. niet bij de eerste code. ;)
 
nee sorry de eerste code is er later bij gemaakt. en moest ik 91 geven.
maar bij elke toets aanraking springt hij over naar de volgende ComboBox.
Het zijn er 91 in het totaal.
 
Laatst bewerkt:
Waarom zet je in de combobox (als dropdownlist: style=2) niet alleen maar geldige waarden ?
Achteraf moeizaam checken is dan overbodig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan