Opgelost VBA data via UserForm naar ander blad

Dit topic is als opgelost gemarkeerd

WilElektro

Gebruiker
Lid geworden
13 mrt 2025
Berichten
36
Hallo allen, ik ben hier nieuw en nog maar kort bekend met VBA; nu heb ik volgende vraag en of hiervoor oplossing is.
Ik heb een UserForm gemaakt met een combobox en een bevestigingsknop; in de combobox wil ik een artikel selecteren uit een tabel op blad 2; indien bevestigd moet dit artikel (met alle cellen in de rij vd artikel) op blad 1 terechtkomen; na een volgende selectie van een artikel moet dit gekozen artikel komen onder vorig artikel op blad 1. Wellicht kan iemand mij hierin helpen
Groet Wil

Ik heb een test bestand bijgevoegd
 

Bijlagen

Probeer het zo eens met een multicolumn combobox waarvan 6 van de 8 kolommen een breedte 0 hebben:
 

Bijlagen

Hallo AH, werkt goed zo; maar als ik op blad Calc links een kolom toevoeg (hier wil ik later aantallen plaatsen) werkt het niet goed; heb je hier ook nog een oplossing voor? Groet
 
Code:
Private Sub Cmdbevestig_Click()
    Dim lastRow As Long
    Dim k As Long

    ' Zorg ervoor dat de naam van het blad klopt
    With ThisWorkbook.Sheets("Calc")
        lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1    ' Vind de laatste rij in kolom A
        ' Voeg de geselecteerde waarde toe aan de volgende rij
        For k = 0 To 7
            .Cells(lastRow, k + 2) = Me.ComboBox1.List(ComboBox1.ListIndex, k)
        Next
    End With
    Me.ComboBox1.Value = ""    ' Maak de ComboBox leeg voor de volgende invoer
End Sub
 
Code:
Private Sub Cmdbevestig_Click()
    Dim lastRow As Long
    Dim k As Long

    ' Zorg ervoor dat de naam van het blad klopt
    With ThisWorkbook.Sheets("Calc")
        lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1    ' Vind de laatste rij in kolom A
        ' Voeg de geselecteerde waarde toe aan de volgende rij
        For k = 0 To 7
            .Cells(lastRow, k + 2) = Me.ComboBox1.List(ComboBox1.ListIndex, k)
        Next
    End With
    Me.ComboBox1.Value = ""    ' Maak de ComboBox leeg voor de volgende invoer
End Sub
 
Graag gedaan en succes verder met je project. :)
 
Gewoon ter overweging: wat als je de aantallen ook via je Userform zou invoeren?
 
Ik heb het maar even gedaan, kan je nog altijd kiezen op welke manier je verder doet;)
 

Bijlagen

Was er mee bezig; maar het voorstel van Enigmasmurf werkt ook goed; hartelijk dank allemaal
Ga nu weer verder met mijn calcualtieprogramma;
Gr
 
Hallo, ik nog een vraagje; indien ik een artikel heb toegevoegd na bevestiging en dit wil ik niet hoe kun je dit dan resetten of annuleren, dus met andere woorden de laatst gevulde rij met het artikel verwijderen
 
Met een extra knop dus. Ik heb die het opschrift "Reset laatste" gegeven, vooruitdenkend aan de mogelijkheid dat je later ook nog een knop "Reset alles" wil;)
Misschien kan je dat, al was het maar voor de lol of om jezelf te testen, zelf eens proberen?
 

Bijlagen

@AHulpje
Een kleinigheidje in jouw voorbeeld: wie eens een moment verstrooid is (zelf ben ik wat dat betreft ervaringsdeskundige🤣) kan ook de titelrij verwijderen.
 
Met een extra knop dus. Ik heb die het opschrift "Reset laatste" gegeven, vooruitdenkend aan de mogelijkheid dat je later ook nog een knop "Reset alles" wil;)
Misschien kan je dat, al was het maar voor de lol of om jezelf te testen, zelf eens proberen?
Ga dit zeker proberen, heb al veel bijgeleerd, dank je
 
Met een extra knop dus. Ik heb die het opschrift "Reset laatste" gegeven, vooruitdenkend aan de mogelijkheid dat je later ook nog een knop "Reset alles" wil;)
Misschien kan je dat, al was het maar voor de lol of om jezelf te testen, zelf eens proberen?
Hallo allemaal, na eea geprobeerd te hebben kom ik erachter (mijn denkfoutje)dat niet de hele rij moet worden verwijderd maar dat de rij met de laatste toegevoede cellen leeggemaakt moeten worden, aangezien ik in de kolommen achter de laaste kolom formules wil plaatsen; zie bijlage
 

Bijlagen

Code:
Private Sub Cmdreset_Click()

Dim lastRow As Long
With ThisWorkbook.Sheets("Calc")
    lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
    If lastRow > 1 Then .Cells(lastRow, 1).Resize(, 9).ClearContents
End With

End Sub
 
Terug
Bovenaan Onderaan