• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA - Open Userform afhankelijk van Combobox keuze

Status
Niet open voor verdere reacties.

RaymondC

Gebruiker
Lid geworden
10 mrt 2008
Berichten
561
Ik zou een specifieke Userform willen openen welke afhankelijk is van de keuze uit de combobox.

Heb 2 comboboxen:

Combobox1: RowSource: =Component_Type (Name Range op Sheet Type_Of_Component)

Combobox2:

Code:
Private Sub ComboBox1_Change()
    Me.ComboBox2.RowSource = Me.ComboBox1
End Sub

Nu zou ik door de gemaakt keuze in Combobox2 een specifieke Userform willen openen. (form2 moet nog gemaakt worden)
Dit zal denk ik met een If statement moeten, echter kom er niet helemaal uit.
En vind dit ook niet zosnel terug via Google.Bekijk bijlage Form_Item_Characteristics.xlsmBekijk bijlage Form_Item_Characteristics.xlsm

Code:
Private Sub CommandButton1_Click()

End Sub
 
Dan zou het zoiets kunnen worden.
Code:
Private Sub CommandButton1_Click()
if combobox2.value = "ADC" then
 me.hide
 userform2.show
end if
End Sub
 
Bedoel je zoiets?
 

Bijlagen

  • Kopie van Form_Item_Characteristics.xlsm
    26,4 KB · Weergaven: 94
Dan zal ik dus 18+18+6 If.. Then moeten maken.

Combinatie : Active + 18 mogelijkheden
Combinatie: Passive + 18 mogelijkheden
Combinatie: Connector + 6 mogelijkheden

Sommige gaan wel gebruik maken van zelfde form, die ingevuld moet worden.
Dit is technische data die ingevuld moet worden.

Dit gaat dan een heel pak aan If ..Then ...Else worden.

Code:
Private Sub CommandButton1_Click()
Dim range As range
    If ComboBox2.Value = "ADC" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Amplifiers" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Clock Management" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Connectivity & Interface IC" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "DAC" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Diodes" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Logic" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Memory" Then
    UserForm3.Show
Else
    If ComboBox2.Value = "Motor Drivers" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "OPTO Electronics" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "PLD" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Power Management & Power Supplies" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Power Drivers" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Processors & Microcontrollers" Then
    UserForm2.Show

Else
    If ComboBox2.Value = "Thermal Management Products" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Transistors" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Video & Imaging Solutions" Then
    UserForm2.Show
Else
    If ComboBox2.Value = "Visible Led's" Then
    UserForm4.Show

End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End Sub

Alvast bedankt HSV & gast0660 voor de aangeboden oplossing.
Kan dit ook met een kortere VBA code gemaakt worden?
Huidige selectie van keuze's zal niet groter worden, het zijn dus echt die 3 stuks van ComboBox1, in combinatie met de 18-18-6 mogelijk heden.
 
Hoi,

Deze code zou de klus moeten klaren:)
Code:
Private Sub CommandButton1_Click()
   Dim temp, i As Long
    temp = ComboBox2.Value
    If IsNumeric(temp) Then temp = Val(temp)
    For i = 2 To 4
        If IsNumeric(Application.Match(temp, Cells(1, i).Resize(500), 0)) Then
            VBA.UserForms.Add("UserForm" & i).Show: Exit For
        End If
    Next
End Sub
Ik lees juist dat er maar maximaal 18 mogelijkheden zijn
dan kan je deze
Code:
Resize(500)
eventueel verminderen, zo zijn er 500 mogelijkheden
 
Laatst bewerkt:
@gast0660,

Zoals we hier in Vlaanderen zeggen:

Kus van de Juf en een bank vooruit!

Perfectomundo werkt zeer goed.
Thanks voor snelle reply en oplossing!
 
Wist niet dat je van "Stad" was.

grz,

Ne aangespoelde Ollander in West Vlaanderen
 
Hoi,
ne aangespoelde west vloaming in Antwerpen:)
Kzijn verder geraakt dan de parking van Antwerpen (over t'water):):)
 
Dan gaat het er niet om wat voor waarde combobox 2 heeft maar om combobox 1 toch.
Code:
Private Sub CommandButton1_Click()
 UserForms.Add("Userform" & ComboBox1.ListIndex + 2).Show
End Sub
 
Niet altijd, er zijn binnen combobox1 + combobox2 een paar combinaties waarvoor een ander form geopend moet worden.
Active + memory moet bijvoorbeeld ander from openen
Connector + military moet ook ander form

Zijn een stuk of 6 uitzonderingen, die een ander form moet openen.

Als dat gaat door de selectie van beide comboboxen, en er is een code voor, dan zie ik die graag.
En als dit meer code geeft, maakt niet.
Want wil het idiotproof hebben.
 
Zoals ik de code van @gast0660 lees geeft die hetzelfde resultaat als in mijn vorige reactie.
Misschien kun je eens verduidelijken met welke combinaties welke form geopend moet worden.
 
Active + Connectivity & Interface IC
Active + Memory
Active + Visible Led's
Active + Logic
Active + overige opties in Active

Passive + Resistor (alle characteristics kunnen ingevuld worden in 1 formulier)
Passive + Capacitors (alle characteristics kunnen ingevuld worden in 1 formulier)

Connector + Circular Military Connectors
Connector + Coaxial

Dit zijn de formulieren die ik zou moeten aanmaken
Dus 9 stuks in totaal.
 
Het spijt me, maar ik kan je niet volgen.
 
Userform1:
Combobox1 Active + combobox2 (conectivity & IC) = Formulier xx
Combobox1 Active + combobox2 (memory) = formulier YD
Enz
Enz

Hoop dat dit iets meer verklaard.
 
Misschien dat onderstaand schema het wat beter uitlegt:

Active ADC Form2
Active Amplifiers Form2
Active Clock Management Form2
Active Connectivity & Interface IC Form3
Active DAC Form2
Active Diodes Form2
Active Logic Form4
Active Memory Form4
Active Motor Drivers Form2
Active OPTO Electronics Form2
Active PLD Form2
Active Power Management & Power Supplies Form2
Active Power Drivers Form2
Active Processors & Microcontrollers Form2
Active Thermal Management Products Form2
Active Transistors Form2
Active Video & Imaging Solutions Form5
Active Visible Led's Form5

Passive All type of Capacitors Form6
Passive All type of Resistors Form7

Connector Circular Military Connectors Form8
Connector Other types of Connectors Form9
 
Hoi,
mischien kun je de 9 uitzonderingen zo bijvoegen ?
Code:
Private Sub CommandButton1_Click()
   Dim temp, i As Long
    [COLOR="#FF0000"]If ComboBox1.Value = "Active" And ComboBox2.Value = "Connectivity & Interface IC" Then
    UserForm5.Show
     Else
     If ComboBox1.Value = "Connector" And ComboBox2.Value Like "Coaxial*" Then
    UserForm5.Show
     Else[/COLOR]
   temp = ComboBox2.Value
   If IsNumeric(temp) Then temp = Val(temp)
    For i = 2 To 4
        If IsNumeric(Application.Match(temp, Cells(1, i).Resize(500), 0)) Then
            VBA.UserForms.Add("UserForm" & i).Show: Exit For
        End If
    Next
   End If
   End If
   
End Sub

Hier werk ik met een wildcard, (alle keuzes waar Coaxial in voorkomt)
Code:
 If ComboBox1.Value = "Connector" And ComboBox2.Value [COLOR="#FF0000"]Like[/COLOR] "Coaxial[COLOR="#FF0000"]*[/COLOR]" 
Then
 
@gast0660:

Heb met jouw code volgende gemaakt, en het werkt.
Bedankt!!

Onderstaande is nu de code, en kan hiermee weg en aanpassen waar nodig:

Code:
Private Sub ComboBox1_Change()
    Me.ComboBox2.RowSource = Me.ComboBox1
End Sub

Private Sub CommandButton1_Click()
   Dim temp, i As Long
    If ComboBox1.Value = "Active" And ComboBox2.Value = "Connectivity & Interface IC" Then
    UserForm6.Show
     Else
    If ComboBox1.Value = "Active" And ComboBox2.Value = "Memory" Then
    UserForm7.Show
     Else
    If ComboBox1.Value = "Active" And ComboBox2.Value = "Visible Led's" Then
    UserForm8.Show
     Else
    If ComboBox1.Value = "Active" And ComboBox2.Value = "Logic" Then
    UserForm9.Show
     Else
    If ComboBox1.Value = "Connector" And ComboBox2.Value Like "Coaxial*" Then
    UserForm4.Show
     Else
     If ComboBox1.Value = "Connector" And ComboBox2.Value = "Circular Military Connectors" Then
    UserForm10.Show
     Else
    If ComboBox1.Value = "Passive" And ComboBox2.Value Like "Resistors*" Then
    UserForm5.Show
     Else
   temp = ComboBox2.Value
   If IsNumeric(temp) Then temp = Val(temp)
    For i = 2 To 4
        If IsNumeric(Application.Match(temp, Cells(1, i).Resize(500), 0)) Then
            VBA.UserForms.Add("UserForm" & i).Show: Exit For
        End If
    Next
   End If
   End If
   End If
   End If
   End If
   End If
   End If
   
End Sub
 
Hoi,
Mooi zo:thumb:, ge wordt nog nen goeie westvloamse ollander:)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan