• 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.

Listbox:rowsource op basis data vorige listbox

Status
Niet open voor verdere reacties.

boome

Gebruiker
Lid geworden
11 mei 2009
Berichten
43
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

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:
Zonder voorbeeldbestand (ontdaan van gevoelige informatie) is het lastig te bepalen wat er aan de hand is want het zou moeten werken.
Krijg je een foutmelding? Zo ja welke?
Bestaat categorie_LEV_X uit meerdere kolommen?

Met vriendelijke groet,


Roncancio
 
Nee de kolom van de leveranciers bestaat slechts uit 1 kolom
 
IK heb nog een beetje verder geëxperimenteerd en het is mij gelukt om het veld categorie dynamisch te maken afhankelijk van de waarde bij leverancier door gebruik te maken van select case:

Code:
Private Sub Fabrikant_Change()
Select Case Fabrikant.Value

Case "LEV1"
Categorie.List = Worksheets("data_validation").Range("categorie_LEV_1").Value
Categorie.ListIndex = 0


Case "PIAVAL"
Categorie.List = Worksheets("data_validation").Range("categorie_LEV_2").Value
Categorie.ListIndex = 0

Case "NAVAILLES"
Categorie.List = Worksheets("data_validation").Range("categorie_LEV_3").Value
Categorie.ListIndex = 0

End select
End sub

Nu heb ik nog 1 probleem en dat is dat ik ook voor het veld artikel dynamisch wil maken door gebruik te maken van Select Case, maar of de een of andere reden lukt dat niet.

Ik heb de code hiervoor al eens toegevoegd aan de bovenstaande code en aan de aan de knop categorie, maar geen van beide opties werkt.

Iemand een idee?
 
Ik was iets te snel met de melding dat het niet werkte :o, het werkt wel door een extra lijn toe te voegen aan elke select case en daarbij de de list aan te passen naar artikel.list

Probleem opgelost dus.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan