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

Fout in code?

Status
Niet open voor verdere reacties.

Jack Nouws

Terugkerende gebruiker
Lid geworden
16 apr 2008
Berichten
1.396
Hey alle,

Deze code zou elke keer als er een klant wordt toegevoeg, de toegevoede klanten netjes onder elkaar zetten maar bij mij wordt het elke keer op de zelfde regel geplaatst.
Wie kan er zien wat ik heb fout gedaan?

Groet Jack

Code:
Private Sub voegtoe_Click()
Dim MyRange As Variant
Set MyRange = Worksheets("Data")

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = False

'waar gaan we opslaan
legeregel = MyRange.Range("C" & Rows.Count).End(xlUp).Row + 1

'wat gaan we opslaan
'        klantcode = voegadrestoe.klantcode.Value
     bedrijfsnaam = voegadrestoe.bedrijfsnaam.Value
         roepnaam = voegadrestoe.roepnaam.Value
   tussenvoegsel1 = voegadrestoe.tussenvoegsel1.Value
       achternaam = voegadrestoe.achternaam.Value
            adres = voegadrestoe.adres.Value
           nummer = voegadrestoe.nummer.Value
          postbus = voegadrestoe.postbus.Value
         postcode = voegadrestoe.postcode.Value
       woonplaats = voegadrestoe.woonplaats.Value
             tel1 = voegadrestoe.tel1.Value
             tel2 = voegadrestoe.tel2.Value
              fax = voegadrestoe.fax.Value
             mob1 = voegadrestoe.mob1.Value
             mob2 = voegadrestoe.mob2.Value
             mail = voegadrestoe.mail.Value
         webadres = voegadrestoe.webadres.Value
              kvk = voegadrestoe.kvk.Value
             iban = voegadrestoe.iban.Value
             bank = voegadrestoe.bank.Value
             hrnr = voegadrestoe.hrnr.Value
            swift = voegadrestoe.swift.Value
              btw = voegadrestoe.btw.Value
              nak = voegadrestoe.nak.Value
         

'controle dat in ieder geval wel dat het adres en de roepnaam ingevuld worden
If roepnaam = Empty Or adres = Empty Then
    MsgBox "Voer 'minimaal' voornaam en adres in!"
    Exit Sub
Else
'waar gaan we het opslaan
'    MyRange.Range("A" & legeregel) = klantcode
    MyRange.Range("D" & legeregel) = bedrijfsnaam
    MyRange.Range("G" & legeregel) = roepnaam
    MyRange.Range("J" & legeregel) = tussenvoegsel1
    MyRange.Range("M" & legeregel) = achternaam
    MyRange.Range("N" & legeregel) = adres
    MyRange.Range("O" & legeregel) = nummer
    MyRange.Range("P" & legeregel) = postbus
    MyRange.Range("Q" & legeregel) = postcode
    MyRange.Range("R" & legeregel) = woonplaats
    MyRange.Range("S" & legeregel) = tel1
    MyRange.Range("T" & legeregel) = tel2
    MyRange.Range("U" & legeregel) = fax
    MyRange.Range("V" & legeregel) = mob1
    MyRange.Range("W" & legeregel) = mob2
    MyRange.Range("X" & legeregel) = mail
    MyRange.Range("Y" & legeregel) = webadres
    MyRange.Range("Z" & legeregel) = kvk
    MyRange.Range("AA" & legeregel) = iban
    MyRange.Range("AB" & legeregel) = bank
    MyRange.Range("AC" & legeregel) = hrnr
    MyRange.Range("AD" & legeregel) = swift
    MyRange.Range("AE" & legeregel) = btw
    MyRange.Range("AF" & legeregel) = nak
    
    If tussenvoegsel1 <> "" Then
        MsgBox "adres " & roepnaam & " " & tussenvoegsel1 & " " & achternaam & " toegevoegd"
    Else
        MsgBox "adres " & roepnaam & " " & achternaam & " toegevoegd"
    End If
   voegadrestoe.Hide
    
End If

response = MsgBox("Wilt u nog een nieuw adres toevoegen?", vbYesNo, Title:="Gegevens opslaan?")
    If response = vbNo Then
        Me.Hide
        Unload Me
    Else
        
        Unload Me

        On Error Resume Next
        voegadrestoe.Show
        On Error GoTo 0
    End If

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = True

End Sub
 
Volgens mij zit de fout in het feit dat je de eerste lege cel leest uit kolom C.
En als je dus in kolom C niets invult blijft de macro altijd naar de eerste lege regel van kolom C schrijven.

Pas deze aan:
legeregel = MyRange.Range("C" & Rows.Count).End(xlUp).Row + 1
legeregel = MyRange.Range("A" & Rows.Count).End(xlUp).Row + 1

Omdat je toch verplicht om een naam in te geven.

Cobbe
 
Laatst bewerkt:
Volgens mij zit de fout in het feit dat je de eerste lege cel leest uit kolom C.
En als je dus in kolom C niets invult blijft de macro altijd naar de eerste lege regel van kolom C schrijven.

Pas deze aan:
legeregel = MyRange.Range("C" & Rows.Count).End(xlUp).Row + 1
legeregel = MyRange.Range("A" & Rows.Count).End(xlUp).Row + 1

Omdat je toch verplicht om een naam in te geven.

Cobbe

Ok Bedankt
De betreffende C Kolom was samengevoegd Ik heb nu een andere kolom toegewezen, en nu werkt het weer.:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan