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

combobox vullen op een form

Status
Niet open voor verdere reacties.

Allrounditer

Gebruiker
Lid geworden
10 jan 2017
Berichten
43
Ik ben een bestelformulier aan het maken.
Ik laad daarbij via een combobox de namen van de klanten afkomstig van een worksheet in Excel.
Ik gebruik hiervoor volgende code:
Code:
Dim c As Range
frmAdres.Visible = False
frmTfEmail.Visible = False
Me.cboKlanten.Clear
With Worksheets("klanten")
    For Each c In .Range(.Range("A3"), .Range("A" & .Rows.Count).End(xlUp))
        If c.Value <> vbNullString Then cboKlanten.AddItem c.Value
    Next c
End With

Na het kiezen van de juiste klant worden op het form worden via labels oa. het adres van de klant getoond en zijn contactgegevens.
Via volgende code:
Code:
Private Sub cboKlanten_Change()

If Me.cboKlanten.Value = "" Then
    frmAdres.Visible = False
    frmTfEmail.Visible = False
Else
    frmAdres.Visible = True
    frmTfEmail.Visible = True
End If
If cboKlanten = Worksheets("klanten").Range("A3").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b3").Value & " " & Worksheets("klanten").Range("c3")
    Me.lblPstStad = Worksheets("klanten").Range("d3").Value & " " & Worksheets("klanten").Range("e3")
    Me.lblTelefoon = Worksheets("klanten").Range("G3").Value
    Me.lblGSM = Worksheets("klanten").Range("f3").Value
    Me.lblEmail = Worksheets("klanten").Range("h3").Value
ElseIf cboKlanten = Worksheets("klanten").Range("a4").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b4").Value & " " & Worksheets("klanten").Range("c4")
    Me.lblPstStad = Worksheets("klanten").Range("d4").Value & " " & Worksheets("klanten").Range("e4")
    Me.lblTelefoon = Worksheets("klanten").Range("G4").Value
    Me.lblGSM = Worksheets("klanten").Range("f4").Value
    Me.lblEmail = Worksheets("klanten").Range("h4").Value
ElseIf cboKlanten = Worksheets("klanten").Range("a5").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b5").Value & " " & Worksheets("klanten").Range("c5")
    Me.lblPstStad = Worksheets("klanten").Range("d5").Value & " " & Worksheets("klanten").Range("e5")
    Me.lblTelefoon = Worksheets("klanten").Range("G5").Value
    Me.lblGSM = Worksheets("klanten").Range("f5").Value
    Me.lblEmail = Worksheets("klanten").Range("h5").Value
ElseIf cboKlanten = Worksheets("klanten").Range("a6").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b6").Value & " " & Worksheets("klanten").Range("c6")
    Me.lblPstStad = Worksheets("klanten").Range("d6").Value & " " & Worksheets("klanten").Range("e6")
    Me.lblTelefoon = Worksheets("klanten").Range("G6").Value
    Me.lblGSM = Worksheets("klanten").Range("f6").Value
    Me.lblEmail = Worksheets("klanten").Range("h6").Value
ElseIf cboKlanten = Worksheets("klanten").Range("a7").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b7").Value & " " & Worksheets("klanten").Range("c7")
    Me.lblPstStad = Worksheets("klanten").Range("d7").Value & " " & Worksheets("klanten").Range("e7")
    Me.lblTelefoon = Worksheets("klanten").Range("G7").Value
    Me.lblGSM = Worksheets("klanten").Range("f7").Value
    Me.lblEmail = Worksheets("klanten").Range("h7").Value
ElseIf cboKlanten = Worksheets("klanten").Range("a8").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b8").Value & " " & Worksheets("klanten").Range("c8")
    Me.lblPstStad = Worksheets("klanten").Range("d8").Value & " " & Worksheets("klanten").Range("e8")
    Me.lblTelefoon = Worksheets("klanten").Range("G8").Value
    Me.lblGSM = Worksheets("klanten").Range("f8").Value
    Me.lblEmail = Worksheets("klanten").Range("h8").Value
ElseIf cboKlanten = Worksheets("klanten").Range("a9").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b9").Value & " " & Worksheets("klanten").Range("c9")
    Me.lblPstStad = Worksheets("klanten").Range("d9").Value & " " & Worksheets("klanten").Range("e9")
    Me.lblTelefoon = Worksheets("klanten").Range("G9").Value
    Me.lblGSM = Worksheets("klanten").Range("f9").Value
    Me.lblEmail = Worksheets("klanten").Range("h9").Value
ElseIf cboKlanten = Worksheets("klanten").Range("a10").Value Then
    Me.LblStrNr = Worksheets("klanten").Range("b10").Value & " " & Worksheets("klanten").Range("c10")
    Me.lblPstStad = Worksheets("klanten").Range("d10").Value & " " & Worksheets("klanten").Range("e10")
    Me.lblTelefoon = Worksheets("klanten").Range("G10").Value
    Me.lblGSM = Worksheets("klanten").Range("f10").Value
    Me.lblEmail = Worksheets("klanten").Range("h10").Value
End If
End Sub


Dit werkt allemaal prima maar dit kan beslist eenvoudiger. Er staan nu maar 10 klanten in het bestand. Wat als dit er bv 50 zijn?
Die labels linken aan de juiste klant moet toch eenvoudiger kunnen?
Zoals bij het laden van de combobox, zou ik ook de labels op een gelijkaardige manier willen linken aan de juiste klant.
Wie kan mij helpen?
Alvast bedankt.
 
Helaas, de link gaat niet over mijn probleem maar over het selectief vullen van een combobox.
Toch bedankt.
 
Een representatief voorbeeld bestand plaatsen zou misschien alles wat duidelijker maken.
 
Alleen de combobox en de labels gevuld.
 

Bijlagen

prachtig. Bedankt.

Kun je me dit uitleggen?

Code:
cboKlanten.List = Sheets("klanten").Cells(1).CurrentRegion.Offset(1).SpecialCells(2).Value

De klant "Test" wordt niet geladen ...
 
Vul die gehele rij van klant Test.

Die specialcels(2) niet weg doen, je krijgt dan een lege regel in je combobox

En anders doe je het zo als je het mailadres niet hebt.
Code:
cboKlanten.List = Sheets("klanten").Range("a2", Sheets("klanten").Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Value
 
beide voorgestelde oplossingen werken. Prima.
Maar waarom is dit zo?
En waarom, als ik die specialcells weglaat, wordt er een extra leeg veld geladen in de Combobox?
Met die specialcells gebeurt dit niet maar dan moet de volledige row gevuld zijn om de naam van de klant te laden.
Het kan bv zijn dat een bepaalde klant enkel GSM heeft en geen Tf, dan wordt hij niet geladen ...
 
Doordat er 'offset(1)' gebruikt wordt om de koptekst niet in de combo te krijgen.

Die tweede is altijd goed.
 
Vul die gehele rij van klant Test.

Die specialcels(2) niet weg doen, je krijgt dan een lege regel in je combobox

En anders doe je het zo als je het mailadres niet hebt.
Code:
cboKlanten.List = Sheets("klanten").Range("a2", Sheets("klanten").Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Value


Ok, nu werkt het perfect, bedankt.

Kan ik die labels van de "producten" ook automatisch laten invullen want nu zijn manueel op de form aangebracht?
 
Dat kan ook, maar geen tijd meer voor vragen; 5 uur gaat de wekker.

Er is vast wel iemand die dat morgen voor je doen wil.
 
lblWit.Caption = Sheets("Producten").Range("B2").Value

enz...
 
lblWit.Caption = Sheets("Producten").Range("B2").Value

enz...

Thx maar ik zoek eerder iets in de vorm van:

Code:
Sub addLabel_TextBox()
formBestelformulier.Show vbModeless
Dim theLabel As Object
Dim theTextbox As Object
If Worksheets("Producten").Range("C13").Value = 4 Then
    Set theLabel = formBestelformulier.frmAllerlei.Controls.Add("Forms.Label.1", True)
    With theLabel
        .Caption = Worksheets("Producten").Range("B2").Value
        .Left = 10
        .Width = 50
        .Top = 20
    End With

    Set theTextbox = formBestelformulier.frmAllerlei.Controls.Add("Forms.textbox.1", True)
    With theTextbox
        .Left = 40
        .Width = 50
        .Top = 20
    End With
    End If
End Sub


Nu moet de code in die zin veranderen dat wanneer in die range (C2:C13) of eerder eender welke range in de kolom C die gelijk is aan 4, moet de respectievelijke waarde van A en B als label en textbox aangemaakt worden en in frmAllerlei geplaatst worden.
En dan is er nog het probleem als er bv 4 verschillende waarden aan de criteria voldoen, van de plaats op het form dat ze mooi onder elkaar geplaatst worden ...
 
Laatst bewerkt:
Je wil dus iedere keer als er een "waarde 4" product bijkomt er een nieuwe label en textbox bijkomt? Ben je niet bang dat vlug plaatsgebrek op uw form zal zijn?
En misschien wil je form inhoud dan nog ergens opslaan ook en zal je in de knoei komen met uw textbox namen.

Ben je je niet beter af met 8 textboxen (4 product en 4 aantal)?
 
Die waarden moeten eigenlijk afdelingen voorstellen. Achteraf, nadat alle bestellingen zijn opgenomen, kan er dan per afdeling een afprint gebeuren. Ik zal wellicht met tabs werken zodat elke afdeling voldoende producten kan bevatten zonder dat er plaatsgebrek ontstaat. Ik wil niet telkens de form moeten aanpassen als er een product bijkomt, verdwijnt of verandert. Op die manier volstaat het om op de worksheet een product bij te voegen of aan te passen en het form is automatisch mee aangepast. Het voorbeeldbestand bevat maar een fractie van alle producten die te bestellen zijn. Ook het klantenbestand is in werkelijkheid veel groter. Ik zoek een manier, net zoals bij de klanten, automatisch de form aan te passen volgens de worksheet. Bedankt om mee te denken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan