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

txt_box blijft leeg ondanks loop waarde adhv combobox 1

Status
Niet open voor verdere reacties.

KiWi007

Gebruiker
Lid geworden
18 aug 2020
Berichten
11
Hallo Forummers,

Ik heb een code geschreven voor een textbox wat de waarde uit een database moet halen afhankelijk van de waarde van een combobox. (gegeven selecteren in combobox bulk 1 en dan op dezelfde rij uit de database de waarde uit kolom N halen voor volume 1 en deze in de betreffende textbox weergeven)

Code:
Private Sub dd_bulk1_Change()

Dim orgbook As Workbook
Dim dbSht As Worksheet
Dim i As Long
Dim LastRow As Integer

Set orgbook = Workbooks(ActiveWorkbook.Name)
Set dbSht3 = orgbook.Sheets("All data Overpompen-Filtratie")

LastRow = dbSht3.Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To LastRow

If dd_bulk1 = dbSht3.Cells(i, "e") Then
   txt_volume1 = dbSht3.Cells(i, "n").Value
End If

Next i
  
End Sub

Nu kan ik in combobox bulk1 wel een waarde kiezen, maar daarmee komt uit dezelfde rij uit de database niet de waarde uit kolom N in het textboxveld van volume1 te staan.


Heb deze code al eerder succesvol gebruikt bij een afgebakende range (bv i = 2 To 100).

Welke fout maak ik?

Alvast bedankt.
 
Leuke code, maar op basis hiervan ga ik geen werkblad overtypen :). Doe er een bestandje bij met wat dummy data zou ik zeggen!
 
In het algemeen zo:

Code:
Private Sub Userform_initialize()
   combobox1.list=sheet1.cells(1).currentregion.value
End Sub

Code:
Private Sub Combobox1_change()
   if combobox1.listindex>-1 Then textbox1= combobox1.column(4)
End sub

In combobox1 worden alle gegevens uit werkblad 1 gelezen.
Als in combobox1 een keuze wordt gemaakt, komt in tekstvak Textbox1 het gegeven uit de aangegeven kolom. In het voorbeeld kolom 4, die overeenkomt met kolom E in het werkblad.
 
Hierbij een testfile met fictieve waarden. Heb wel de bulk en volume kolomkop gebruikt (maar niet op de oorspronkelijke posities (kolom e en n) maar dat maakt verder niet uit, dat is alleen kolomnr aanpassen uiteindelijk.

Moet nog wel een opmerking plaatsen dat de waarden in de database komen door toevoegen van een userform en dat de waarden in combobox bulk komen uit waarden die overeenkomen met dezelfde waarde uit kolom product. Dus men selecteert product en dan kan men in kolom bulk kiezen uit waarden die horen bij dat betreffende product.
 

Bijlagen

  • testfile volume.xlsm
    24,7 KB · Weergaven: 29
snb,

Dank voor je antwoord. Maar,


De waarde uit combobox1 beschreven in jouw antwoord komen niet volledig uit de database.

De waarden om uit te kiezen komen al door een verwijzing/selectie uit een andere combobox.
Deze werkt wel. Dus kies ik in mijn 1e combobox een waarde dan haalt hij uit de database de overeenkomende waarden uit kolom 5 (e).

Ik krijg het alleen niet voor elkaar om vanuit die 2e combobox (nr 1 in het antwoord) de doorlink te maken naar de textbox. Dus dat ik uit die selectie een waarde kies en dat hij dan in de tekstbox de waarde plaatst die overeenkomt uit kolom 14 (N).

Ik zal hieronder beide codes plaatsen die ik hiervoor gebruikt heb (de 2e code staat ook al bovenin, maar wellicht dat er in de connectie tussen die 2 iets mis gaat)

Code:
Private Sub dd_product_Change()

Dim orgbook As Workbook
Dim dbSht As Worksheet
Dim x As Long
Dim LastRow As Integer


Set orgbook = Workbooks(ActiveWorkbook.Name)
Set dbSht3 = orgbook.Sheets("All data Overpompen-filtratie")

MyVal = dd_product.Value

LastRow = dbSht3.Cells(Rows.Count, 1).End(xlUp).Row


For x = 2 To LastRow

    If MyVal = dbSht3.Cells(x, 1) Then

       dd_bulk1.AddItem dbSht3.Cells(x, "e")

    End If

    If MyVal = dbSht3.Cells(x, 1) Then

       dd_bulk2.AddItem dbSht3.Cells(x, "e")

    End If
    
    If MyVal = dbSht3.Cells(x, 1) Then

       dd_bulk3.AddItem dbSht3.Cells(x, "e")

    End If

    If MyVal = dbSht3.Cells(x, 1) Then

       dd_bulk4.AddItem dbSht3.Cells(x, "e")

    End If
    
    If MyVal = dbSht3.Cells(x, 1) Then

       dd_bulk5.AddItem dbSht3.Cells(x, "e")

    End If

Next x

End Sub

Code:
Private Sub dd_bulk1_Change()

Dim orgbook As Workbook 
Dim dbSht As Worksheet 
Dim x As Integer
Dim LastRow As Integer

Set orgbook = Workbooks(ActiveWorkbook.Name)
Set dbSht3 = orgbook.Sheets("All data Overpompen-Filtratie")

LastRow = dbSht3.Cells(Rows.Count, 1).End(xlUp).Row

For x = 2 To LastRow

If dd_bulk1 = dbSht3.Cells(x, 5) Then
   txt_volume1 = dbSht3.Cells(x, 14).Value
End If

Next x
  
End Sub


Uiteindelijk moet dit 5x gebeuren (voor bulk 1 t/m 5) maar ik ben het nu voor 1 aan het testen of het lukt bij bulk 1, vandaar.
 
Laatst bewerkt:
Je doet niets met mijn suggesties.
Ik zie geen Initialize procedure.

Je heb de suggesties ook niet ganalyseerd, want het resultaat van rowsource naar een totaal andere range is toch totaal anders.
Rowsource is hiervoor helemaal niet bedoeld.

Zie: https://www.snb-vba.eu/VBA_Fill_combobox_listbox.html
 
Ik heb zeker wel wat gedaan met jouw input, ik kreeg een foutmelding waardoor ik daar niet verder aan ging prutsen.

Maar heb daarna mijn verhaal nogmaals completer gemaakt omdat mijn 1e vraag de helft was van de benodigde functie.
En ben er toch blij dat ik dat gedaan heb, want je hebt me in laten zien dat de functie die ik gebruikte niet de juiste was omdat het een datafile is die vanaf nu tot in lengte van dagen gevuld gaat worden en mijn methode daar niet geschikt voor is.

Ik ben dus in mijn document verder aan de gang gegaan met jouw input en dat is dit:

Code:
Private Sub frm_yieldurethanen_verpakken_initialize()

Dim orgbook As Workbook
Dim dbSht As Worksheet

Set orgbook = Workbooks(ActiveWorkbook.Name)
Set dbSht3 = orgbook.Sheets("All data Overpompen-Filtratie")
Set dbSht1 = orgbook.Sheets("Drop down info")

dd_product.List = dbSht1.Cells(3).CurrentRegion.Value

dd_bulk1.List = dbSht3.Cells(5).CurrentRegion.Value

End Sub

Code:
Private Sub dd_product_change()

   If dd_product.ListIndex > -1 Then dd_bulk1 = dd_product.Column(5)
   
End Sub

Code:
Private Sub dd_bulk1_change()

   If dd_bulk1.ListIndex > -1 Then txt_volume1 = dd_bulk1.Column(14)
   
End Sub

Maar dan krijg ik de foutmelding: Could not get the Column property. Invalid argument.


combobox 1 (dd_product) wordt gebruikt om een product te kiezen. ik heb in een aparte sheet (drop down info) in kolom 3 alle producten staan waar men uit kan kiezen. Vanuit die keuze moet er in combobox 2 (dd_bulk1) de waarden komen uit kolom 5 van de tabel op sheet all data overpompen-filtratie die overeenkomen met het gekozen product (deze staan in de tabel in kolom 1). En afhankelijk van deze waarde moet in textbox 1 (txt_volume1) de overeenkomstige waarde uit kolom 14 komen te staan die behoort bij wat men kiest in combobox 2.

En ik wil heel graag snappen wat ik fout doe.
 
Zonder bestand niet te beoordelen.
 
Hierbij een vroobeeldbestand.

Alle onnodige informatie is verwijderd.
En het gaat om het 2e userform (frm_yieldurethanen_verpakken). Voor het eerste is alles in orde.
 

Bijlagen

  • Yield Urethanen testkopie 2 (forumidee).xlsm
    82,4 KB · Weergaven: 20
Dan opent hij het hele userform niet. Vandaar dat ik de naam van mijn userform heb gepakt.
 
Je gebruikt Rowsource en een soort van Userform_initialize() door elkaar heen en dat werkt niet. Daarnaast gebruik je currentregion zonder te begrijpen wat dat is.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan