• 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 in combinatie met tabel

Status
Niet open voor verdere reacties.

Kenneth1985

Gebruiker
Lid geworden
3 jun 2015
Berichten
7
Goedenavond allen,

ik heb een userform gemaakt in vba en daar de code achter geschreven
nu is het zo dat de userform doet wat hij moet doen behalve lege regels zoeken in het tabel.

hieronder de code.

Private Sub CommandButton1_Click()

Dim emptyRow As Long

'Make Sheet1 active
Blad2.Activate

:o(hier gaat het fout hij pakt niet de eerste regel in het tabel maar gaat ook niet verder):o

'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("C5:C34")) + 1

'Transfer information
Cells(emptyRow, 3).Value = NaamTextBox1.Value
Cells(emptyRow, 4).Value = AchterNaamTextBox1.Value
Cells(emptyRow, 5).Value = BedrijfsNaamTextBox1.Value
Cells(emptyRow, 6).Value = StraatTextBox1.Value
Cells(emptyRow, 7).Value = PostCodeTextBox1.Value
Cells(emptyRow, 8).Value = WoonplaatsTextBox1.Value
Cells(emptyRow, 10).Value = LandTextBox1.Value
Cells(emptyRow, 14).Value = EmailTextBox1.Value
Cells(emptyRow, 15).Value = WebSiteTextBox1.Value
Cells(emptyRow, 16).Value = TelefoonNummerTextBox1.Value
Cells(emptyRow, 17).Value = GsmTextBox1.Value

End Sub

mijn tabel begint van kolom C
ik hoop dat iemand hier mij advies in kan geven.
alvast vriendelijk bedankt.

Met vriendelijke Groet
Kenneth van Dissel

Bekijk bijlage Kenneth VBA test.xlsm
 
Laatst bewerkt:
Het blad waar het naar toe moet heet Blad2?
Probeer dit dan eens:
Code:
Private Sub CommandButton1_Click()
    Dim emptyRow As Long

    With Sheets("Blad2")
        'Determine emptyRow
        emptyRow = .Cells(.Rows.Count, "C").End(xlUp).Row +1

        'Transfer information
        .Cells(emptyRow, 3).Value = NaamTextBox1.Value
        .Cells(emptyRow, 4).Value = AchterNaamTextBox1.Value
        .Cells(emptyRow, 5).Value = BedrijfsNaamTextBox1.Value
        .Cells(emptyRow, 6).Value = StraatTextBox1.Value
        .Cells(emptyRow, 7).Value = PostCodeTextBox1.Value
        .Cells(emptyRow, 8).Value = WoonplaatsTextBox1.Value
        .Cells(emptyRow, 10).Value = LandTextBox1.Value
        .Cells(emptyRow, 14).Value = EmailTextBox1.Value
        .Cells(emptyRow, 15).Value = WebSiteTextBox1.Value
        .Cells(emptyRow, 16).Value = TelefoonNummerTextBox1.Value
        .Cells(emptyRow, 17).Value = GsmTextBox1.Value
    End With
End Sub
 
Laatst bewerkt:
Je hebt niet m'n vraag beantwoord.
 
Oh sorry iets te snel gelezen.
maar het klopt hij moet op blad 2 komen.
tot zoverre werkt het ook goed het is alleen dat het tabel pas begint bij cel C5 dat is de eerste lege regel.
ik hoop dat je hier wat mee kunt?.

groet,
kenneth
 
De code iets aangepast. Er moest nog +1 bij, maar dat staat los van de Subscript fout.
Plaats anders je document hier.

NB:
blad 2 is niet gelijk aan Blad2
Daarvoor stelde ik die vraag.
Wees daar precies in.
 
Laatst bewerkt:
ik heb het bestand er even opgezet.

het is de bedoeling dat hij op blad 2 de regel invoert
vanaf het moment dat het tabel begint.
mijn excuses voor de onduidelijkheid ik ben redelijk bekend met excel maar nog niet met vba.
ik hoop dat u mij kan helpen.

groet
 
Ik zie nog steeds geen blad 2 en geen Blad2, maar bladen met de namen Home pagina, Klantenbestand, Inkomsten.
Dit: With Sheets("Blad2")
Kan dan niet omdat het blad met de naam Blad2 niet bestaat en dat was het eerste waar ik naar vroeg.
Dat bedoelde ik dus met precies zijn.
 
Om nog iets preciezer te zijn werkt het sowieso niet. De laatste lege rij in de tabel wordt niet gevonden. Als er al gegevens weggeschreven worden dan gebeurt dit 1 rij onder de tabel.

Twee subjes om te zien dat het resultaat van de laatste rij 39 is. En het verschil tussen gebruik van bladx en sheets(x)

Code:
Sub VenA()
With Sheets("Klantenbestand")
         emptyRow = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
         MsgBox emptyRow
End With
End Sub


Sub VenA_1()
With Blad2
         emptyRow = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
         MsgBox emptyRow
End With
End Sub
 
Gebruik deze eens om de eerste vrije cel in kolom C te bepalen, want met de traditionele manier kom je (door de kleuren waarschijnlijk) steeds op 38 uit:

Code:
    With Sheets("Klantenbestand")
        'Determine emptyRow
        For Lrow = 5 To .UsedRange.Rows.count
         If .Cells(Lrow, 3) = "" Then emptyRow = Lrow: Exit For
        Next
 
Listobjecten hebben hun eigen methoden en eigenschappen.
Code:
Private Sub CommandButton1_Click()
 with Sheets("Klantenbestand").listobjects(1)
  .listrows.add
  .range(.listrows.count + 1, 1).resize(, 4) = array(textbox1, textbox2, textbox3, textbox4)
 end with
End Sub
 
Goedemorgen allen,

With Sheets("Klantenbestand")
'Determine emptyRow
For Lrow = 5 To .UsedRange.Rows.count
If .Cells(Lrow, 3) = "" Then emptyRow = Lrow: Exit For
Next

deze was de juiste hiermee ben ik een heel eind mee geholpen.
nu komt het na het invullen elke keer op een nieuwe regel precies zoals ik wilde.

iedereen die heeft mee gedacht mijn dank daarvoor.

met vriendelijke groet
Kenneth
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan