variabele dropdown menu's nav antwoord

Status
Niet open voor verdere reacties.

missie91

Gebruiker
Lid geworden
12 jun 2013
Berichten
17
Goedemiddag,

Via VBA ben ik bezig om met Excel een formulier te schrijven. Nu heb ik de toepassingen staan alleen de data er juist op krijg is lastig. Want ik heb te maken met een dropdown menu waar de waarde in staat waar het volgende dropdown menu mee moet werken.

zie bestand

Bekijk bijlage test1.xlsm

Alvast bedankt!
 
bedankt excel amateur, nee had ik nog niet gevonden maar ik begrijp de code niet helemaal. kan de bijbehorende documenten ook niet openen.
 
okay het loopt echter heb ik nu fout melding in dit stukje
For jj = 4 To 6
Me("tekst" & jj).Caption = sn(j, jj)


komt uit deze code:

Private Sub tekst4_Click()

End Sub

Private Sub titel3_Click()

End Sub

Private Sub titel4_Click()

End Sub

Private Sub UserForm_Initialize()
keus1.List = Filter([transpose(if(countif(offset(database!A1,,,row(A1:A800)),database!A1:A800)=1,database!A1:A800,"~"))], "~", False)
keus2.Clear

End Sub
Private Sub keus1_Change()
keus2.ListIndex = -1

For jj = 4 To 6
Me("tekst" & jj).Caption = ""
Next

[output!D1] = keus1.Value
If keus1.ListIndex > -1 Then keus2.List = Split(lijst(Filter([transpose(if(database!A1:A800=output!D1,database!B1:B800,"#"))], "#", False)), ",")
End Sub

Function lijst(sn)
For j = 0 To UBound(sn)
If InStr(c01 & ",", "," & sn(j) & ",") = 0 Then c01 = c01 & "," & sn(j)
Next
lijst = Mid(c01, 2)
End Function
Private Sub keus2_Change()
If keus2.ListIndex = -1 Then Exit Sub

sn = Sheets("database").Cells(1).CurrentRegion
c01 = keus1.Value & keus2.Value & keus3.Value
For j = 1 To UBound(sn)
If sn(j, 1) & sn(j, 2) & sn(j, 3) = c01 Then Exit For
Next

For jj = 4 To 6
Me("tekst" & jj).Caption = sn(j, jj)
Next
End Sub
 
Als je code plaatst dan deze graag tussen code tags. Waarom je een listbox wil gebruiken in deze opzet lijkt mij niet erg logisch. Maak gebruik van een combobox. Met een paar regels heb je dan de basis klaar. Schrijf ik als formulier leek.;)

Code:
Private Sub ComboBox1_Change()
ComboBox2.List = Sheets(1).Cells(1).Offset(1, ComboBox1.Value + 1).Resize(5, 1).Value
End Sub

Code:
Private Sub UserForm_Initialize()
ComboBox1.List = Sheets(1).Columns(1).SpecialCells(2, 1).Value
End Sub
 

Bijlagen

VenA als ik de code gebruik die jij oppert en aanpas aan de gegevens waar het om gaat. want ik het voorbeeld geef ik nummers maar als ik deze vervang voor woorden pakt hij deze niet meer op. maar ik gebruik ook in de code die ik ingevoegd had comboboxen.
 
Ik heb alleen naar jouw bestandje gekeken en daarin gebruik je Listboxen. De code is nl onleesbaar zolang deze niet tussen tags staat. Als je een voorbeeldje plaatst, plaats dan geen getallen als er in werkelijkheid tekst in staat want dan werkt Specialcells(2,1) natuurlijk niet.

Probeer het eens met deze.
Code:
Private Sub UserForm_Initialize()
ComboBox1.List = Sheets(1).Cells(1).Offset(1).Resize(Application.CountA(Columns(1)) - 1).Value
End Sub
 
Code:
ComboBox1.List = Sheets(1).Columns(1).SpecialCells(2).Value
 
Heeft als voordeel dat de kolomkop meekomt. En als nadeel dat de kolomkop meekomt. Elk voordeel heb zn nadeel en vice versa
 
Code:
ComboBox1.List = Sheets(1).Columns(1).SpecialCells(2).offset(1).specialcells(2).Value
 
goedemorgen,

nog een vervolg vraagje, ik heb in het userform een checkbox toegevoegd maar is het mogelijk of er een functie of een voorwaarde in te bouwen. dat zolang de checkbox niet aangevinkt is de volgende 2 comboboxen niet geactiveerd worden?
heb het nu zo ingesteld dat combobox 1 moet ingevuld zijn voor dat combobox 2 waardes krijgt en dit geldt ook combobox3 en 4.

maar is het mogelijk om dus een voorwaarde aan de laaste 2 comboboxen te hangen die afhankelijk is van een checkbox?

dankje!
 
Zo bijvoorbeeld:
Code:
For i = 1 To 2
    Me("ComboBox"& i).Enabled = Me.CheckBox1
Next i
 
Zo bijvoorbeeld:
Code:
For i = 1 To 2
    Me("ComboBox"& i).Enabled = Me.CheckBox1
Next i

hij werkt echter moet ik eerst een keer klikken op de checkbox om het te activeren.. want de code die ik nu heb is de volgende:
Code:
Private Sub CheckBox1_Click()

For i = 3 To 4
'keus is bij mij een combobox
    Me("keus" & i).Enabled = Me.CheckBox1
Next i



End Sub
 
Laatst bewerkt:
De startstatus van het formulier (en de keuzelijsten) moet je bij de Initialize van het formulier instellen. Dezelfde code kun je dus ook kopiëren:
Code:
Private Sub UserForm_Initialize()
    keus1.List = Sheets(1).Columns(1).SpecialCells(2, 1).Value
    For i = 3 To 4
        Me("keus" & i).Enabled = Me.CheckBox1
    Next i
End Sub
Nu kijkt het formulier bij het laden naar de status van het selectievakje (waarschijnlijk leeg) en schakelt dan de keuzelijsten uit.
 
hey
heb de code verplaatst naar Userform initialize, echter zijn bij opstart van het userform de comboboxen vergrendeld die vergrendeld moeten zijn echter ontgrendelen ze niet als checkbox aangevinkt is.
ik zie dat ik een andere vernoeming heb van mijn bron. Dit waarschijnlijk omdat ik niet met cijfers werk maar met woorden of zinnen. Zou dit het probleem punt kunnen zijn waarom de combobox niet geactiveerd wordt?


Code:
Private Sub UserForm_Initialize()
    sn = Sheets("database").Cells(1).CurrentRegion
 
    [B]For i = 3 To 4
    Me("keus" & i).Enabled = Me.CheckBox1
Next i[/B]
For j = 1 To UBound(sn)
        If InStr(c01 & ",", "," & sn(j, 1) & ",") = 0 Then c01 = c01 & "," & sn(j, 1)
    Next
    
    keus1.List = Split(Mid(c01, 2), ",")
    keus2.Clear
    keus3.Clear
    keus4.Clear
    
   datum.Text = Format(Now(), "dd-mm-yy")


        
    
End Sub

groetjes
Missie
 
Zet je eigen code bij in de formmodule.
Code:
Private Sub CheckBox1_Click()
For i = 3 To 4
'keus is bij mij een combobox
    Me("keus" & i).Enabled = Me.CheckBox1
Next i
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan