Bekijk bijlage Projectenlijst_NL macro test vbld.part03.rarBekijk bijlage Projectenlijst_NL macro test vbld.part02.rarBekijk bijlage Projectenlijst_NL macro test vbld.part01.rarIk heb (met hulp van dit forum) onderstaande code gerealiseerd om een invulformulier aan te sturen.
De code werkt perfect dus dat vormt geen probleem.
Nu wil ik echter een paar verbeteringen aanbrengen, maar het wil niet zo goed lukken.
Er zijn 3 "listboxen" die nu elk naar een benoemde range verwijzen zijnde fabrikant, Categorie en artikel.
Op dit moment is het zo dat alle artikel en categoriën bij elkaar staan, dus in een range.
Nu zou ik de volgende verbetering willen doorvoeren, afhankelijk van de selectie die er gebeurd bij fabrikant, moet er verwezen worden naar de range met de artikels van de geselecteerde fabrikant, hetzelfde geld voor de artikels (ik heb voor elke fabrikant een afzonderlijke range aangemaakt voor de categoriën en artikels dwz bij 3 fabrikanten zijn er 3 verschillende ranges voor de categorie en artikels.
Ik ben al aan de slag gegaan met een if else then clausule zoals je kunt zien in de code maar het lukt me niet om het werkend te krijgen:
Het gaat over het groene stuk in de code
Een kleine 2de vraag, is het mogelijk om voor getalvelden op te geven hoe deze worden weggeschreven (bv met 2 decimalen en scheiding voor de duizendtallen)
Eenheidsprijs in het voorbeeld
De code werkt perfect dus dat vormt geen probleem.
Nu wil ik echter een paar verbeteringen aanbrengen, maar het wil niet zo goed lukken.
Er zijn 3 "listboxen" die nu elk naar een benoemde range verwijzen zijnde fabrikant, Categorie en artikel.
Op dit moment is het zo dat alle artikel en categoriën bij elkaar staan, dus in een range.
Nu zou ik de volgende verbetering willen doorvoeren, afhankelijk van de selectie die er gebeurd bij fabrikant, moet er verwezen worden naar de range met de artikels van de geselecteerde fabrikant, hetzelfde geld voor de artikels (ik heb voor elke fabrikant een afzonderlijke range aangemaakt voor de categoriën en artikels dwz bij 3 fabrikanten zijn er 3 verschillende ranges voor de categorie en artikels.
Ik ben al aan de slag gegaan met een if else then clausule zoals je kunt zien in de code maar het lukt me niet om het werkend te krijgen:
Het gaat over het groene stuk in de code
Een kleine 2de vraag, is het mogelijk om voor getalvelden op te geven hoe deze worden weggeschreven (bv met 2 decimalen en scheiding voor de duizendtallen)
Eenheidsprijs in het voorbeeld
Code:
Sub Wissen_Click()
Unload Me
Invoer_gegevens.Show
End Sub
Sub Sluiten_Click()
'Actie knop sluiten
Sheets("PRL").Select
Unload Me
End Sub
Sub Opslaan_click()
'In formulier ingevulde gegevens naar de sheet PRL wegschrijven
Dim X As Long
If Contactnr = "" Then MsgBox "Contactnr verplicht": Exit Sub
Sheets("PRL").Activate
With ActiveSheet
X = Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & X) = Contactnr
Range("B" & X) = contactnaam
Range("C" & X) = Plaats
Range("D" & X) = Provincie
Range("E" & X) = Type1
Range("F" & X) = Scoringskans
Range("G" & X) = Termijn
Range("H" & X) = Jaar_start_opvolging
Range("I" & X) = Jaar_aankoop
Range("J" & X) = Fabrikant
Range("K" & X) = Categorie
Range("M" & X) = artikel
Range("N" & X) = Aantal
Range("O" & X) = Eenheidsprijs
Range("Q" & X) = status
Range("S" & X) = Contacteren_opvolgen
Range("T" & X) = opmerking
End With
'Ingesteld autofilter opnieuw toepassen zodat nieuw ingevoerde gegevens zichtbaar zijn
ActiveSheet.AutoFilter.ApplyFilter
Userform_initialize
'Ivulformulier leegmaken nadat nieuwe gegevens weggeschreven werden
Unload Me
Invoer_gegevens.Show
End Sub
Private Sub status_verbergen()
Satus.Enabled = False
End Sub
Sub Userform_initialize()
'Instellen listboxen
Provincie.RowSource = "provincie"
Type1.RowSource = "ZH_RO"
Termijn.RowSource = "termijn"
Fabrikant.RowSource = "fabrikant"
[COLOR="lime"]If Fabrikant.Value = "LEV_X" Then
Categorie.RowSource = "categorie_LEV_X"
Else
Categorie.RowSource = "categorie"
End If[/COLOR]artikel.RowSource = "artikel"
Contacteren_opvolgen.Text = Format("dd/mm/yy")
End Sub
Private Sub Userform_Keydown(ByVal Keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
End Sub
Laatst bewerkt: