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

Userform vullen van velden

Status
Niet open voor verdere reacties.

lekkerbek312

Gebruiker
Lid geworden
26 apr 2009
Berichten
50
Hallo,

Ik heb een userform gemaakt, maar hij doet nog niet helemaal wat ik wil. Er mist wat code, maar ik zou niet weten hoe te beginnen. Wellicht weet een van jullie het:

Als bijlage vind je een screenshot van het formulier. Het is de bedoeling dat het volgende wordt ingevuld
- Kolom A = leverancier
- Kolom B = winkel
- Kolom C = jaar
- Kolom D = periode
- Kolom E = bedrag

Ik heb nu de volgende code en dan wordt alleen kolom B gevuld (winkel) en kolom C (bedrag).

Arec1 verwijst naar Winkel
Arec2 verwijst naar Bedrag
Brec1 verwijst naar Winkel (2e regel)
enz.

Code:
Dim cNum As Integer
Dim X As Integer
Dim nextrow As Range
Dim rRef As String

Private Sub Userform_Initialize()
ComboBox1.RowSource = "Leveranciers"
ComboBox2.RowSource = "Periode"
ComboBox3.RowSource = "Jaar"
Arec1.RowSource = "Winkels"
Brec1.RowSource = "Winkels"
Crec1.RowSource = "Winkels"
Drec1.RowSource = "Winkels"
Erec1.RowSource = "Winkels"
Frec1.RowSource = "Winkels"
Grec1.RowSource = "Winkels"

End Sub

Private Sub cmdAdd_click()
cNum = 2
rRef = "Arec"
addme
rRef = "Brec"
addme
rRef = "Crec"
addme
rRef = "Drec"
addme
rRef = "Erec"
addme
rRef = "Frec"
addme
rRef = "Grec"
addme
End Sub

Sub addme()
Set nextrow = Blad6.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
For X = 1 To cNum
nextrow = Me.Controls(rRef & X).Value
Set nextrow = nextrow.Offset(0, 1)
Next
End Sub
Knipsel.PNG
 
Laatst bewerkt:
Dat kan veel beter:

- Als je rowsource gebruikt kun je dat gewoon in het ontwerp bij de eigenschappen zetten; dan heb je geen Initialize code nodig.
- zet alle code die uitgevoerd moet worden door het gebruik van het userform ook in de codemodule van het userform
- het gebruik van 'Call' is sinds Excel 97 overbodig.
- en maak gebruik van VBA bijv.

ipv.
Code:
Sub Arec()
Set ws = Worksheets("Blad1")
lRow = ws.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row
ws.Cells(lRow, 1).Value = UserForm1.ComboBox1.Value
ws.Cells(lRow, 2).Value = UserForm1.CBARec.Value
ws.Cells(lRow, 3).Value = UserForm1.ComboBox3.Value
ws.Cells(lRow, 4).Value = UserForm1.ComboBox2.Value
ws.Cells(lRow, 5).Value = UserForm1.TBArec.Value
End Sub

in de codemodule van het userform
Code:
Private Sub TBArec_Change()
  if TBArec.listindex>-1 then sheets("Blad1").Cells(Rows.Count, 2).End(xlUp).Offset(1).resize(,5)=array(ComboBox1,CBARec,ComboBox3,ComboBox2,TBArec)
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan