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

Gegevens via userform wijzigen

Status
Niet open voor verdere reacties.

Figaro75

Gebruiker
Lid geworden
12 dec 2011
Berichten
91
Goedenavond,

Ik probeer een adressenbestand voor klanten te maken waarbij je via een userform gegevens kan opvragen, wijzigen etc.
Op de site hier heb ik een bestand gevonden waar ik mee verder ben gegaan, personeel.xls
Hier zat namelijk al heel veel functionaliteit in die ik ook wel wilde gebruiken.

Vol goede moed ben ik begonnen met uitbreiden en aanpassen maar mijn kennis van VBA is gering.
Ook het gebruik van een userform is nieuw voor mij.

Nu is het mij gelukt om het userform te vullen bij het zoeken naar klanten.
Ik kan ook het userform gevuld krijgen met klantgegevens bij het willen wijzigen van klanten.
Maar als ik vervolgens op "wijzigen" druk lijkt hij dingen te doen maar er wordt niets gewijzigd.

Ik heb de range al een keer aangepast dat hij de hele tabel pakte maar dan werd elke lege regel tot 999 gevuld met de informatie uit het userform.

Wie kan mij helpen om aan te geven waar mijn code fout gaat?

Ook staat er een module in "DB_zoeknaam" maar volgens mij is deze overbodig??

http://we.tl/GjZND8uUvf
 
Ik heb zelf nog eens naar het originele bestand gekeken en kan niet echt vinden waar het fout gaat.
In het originele bestand is er 1 zoekwaarde welke wordt samengesteld via een combobox uit de eerste 3 kolommen (achternaam, tussenvoegsel en voornaam).

Zelf kies ik 3 zoekwaarden welke afhankelijk van elkaar zijn vanuit kolom 1 (klant), 26 ((samengestelde) naam contactpersoon) en 31 (afdeling).
Dus combobox 1 vult zich met de gegevens uit kolom 1 (keus1). Bij een keuze wordt combobox 2 (keus26) gevuld en daarna combobox 3 (keus31).

Het lijkt echter alsof tijdens het schrijven de combinatie 1,26 en 31 niet wordt gebruikt om de juiste rij te selecteren en de gegevens te schrijven.

Ik heb intussen ook de nieuwe klant module aangepast maar deze werkt dus ook niet.
Lijkt op hetzelfde 'probleem' te stuiten. Er wordt dus niets ingevuld.
 
Als je wat in een userform invult, dan staat het daarmee nog niet in het werkblad.
Bij alles wat je in een formulier invult moet je nadien als op een knop wordt geklikt (bv. de knop "Wijzig") worden aangegeven waar die gegevens naar toe moeten worden geschreven.
 
Die knop heb ik ook, zie het bijgevoegde bestand bij post#1

Code:
Private Sub wijzig_Click()

zoeknaam = bewerkklant.zoeknaam.Value
bewerkklant_module (zoeknaam)

response = MsgBox("Wilt u nog een klant wijzigen?", vbYesNo, Title:="Gegevens wijzigen!")
    If response = vbNo Then
        Me.Hide
        Unload Me
    Else
        
        Unload Me
        On Error Resume Next
        bewerkklant.Show
        On Error GoTo 0
        
    End If

End Sub

Daar wordt dus module bewerkklant_module gestart, maar wat doet de tekst (zoeknaam) achter bewerkklant_module?

Code:
Sub bewerkklant_module(zoeknaam As String)

Dim MyRange             As Variant
Dim c                   As Range

Set MyRange = Worksheets("klantgegevens")

zoeknaam = bewerkklant.zoeknaam.Value

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = False
    
If bewerkklant.zoeknaam.Text = Empty Then
    MsgBox "Kies eerst een klant!"
Else

    'haal de beveiliging van het blad
    Sheets("klantgegevens").Unprotect

    'wat gaan we opslaan
    klant = bewerkklant.klant.Value
    postadres = bewerkklant.postadres.Value
    postcode_01 = bewerkklant.postcode_01.Value
    plaats_01 = bewerkklant.plaats_01.Value
    adres_03 = bewerkklant.adres_03.Value
    postcode_03 = bewerkklant.postcode_03.Value
    plaats_03 = bewerkklant.plaats_03.Value
    telefoon = bewerkklant.telefoon.Value
    faxnr = bewerkklant.faxnr.Value
    website = bewerkklant.website.Value
    email_01 = bewerkklant.email_01.Value
    geslacht = bewerkklant.geslacht.Value
    titel = bewerkklant.titel.Value
    voornaam = bewerkklant.voornaam.Value
    tussenvoegsel = bewerkklant.tussenvoegsel.Value
    achternaam = bewerkklant.achternaam.Value
    cp_telefoon = bewerkklant.cp_telefoon.Value
    cp_mobiel = bewerkklant.cp_mobiel.Value
    cp_email = bewerkklant.cp_email.Value
    functie = bewerkklant.functie.Value
    afdeling = bewerkklant.afdeling.Value
    type_klant = bewerkklant.type_klant.Value
    klant_van = bewerkklant.klant_van.Value
    hoe = bewerkklant.hoe.Value
    brief = bewerkklant.brief.Value
    klantnummer = bewerkklant.klantnummer.Value

For Each c In MyRange.Range("A3:A999")
    If c = keus1 And c.Offset(0, 25).Value = keus26 And c.Offset(0, 30).Value = keus31 Then
            MyRange.Range("A" & c.Row) = bewerkklant.klant.Text
            MyRange.Range("B" & c.Row) = bewerkklant.postadres.Text
            MyRange.Range("C" & c.Row) = bewerkklant.postcode_01.Text
            'MyRange.Range("D" & c.Row) = bewerkklant.postcode_02.Text
            MyRange.Range("E" & c.Row) = bewerkklant.plaats_01.Text
            'MyRange.Range("F" & c.Row) = bewerkklant.plaats_02.Text
            MyRange.Range("G" & c.Row) = bewerkklant.adres_03.Text
            MyRange.Range("H" & c.Row) = bewerkklant.postcode_03.Text
            'MyRange.Range("I" & c.Row) = bewerkklant.postcode_04.Text
            MyRange.Range("J" & c.Row) = bewerkklant.plaats_03.Text
            'MyRange.Range("K" & c.Row) = bewerkklant.plaats_04.Text
            MyRange.Range("L" & c.Row) = bewerkklant.telefoon.Text
            MyRange.Range("M" & c.Row) = bewerkklant.faxnr.Text
            MyRange.Range("N" & c.Row) = bewerkklant.website.Text
            MyRange.Range("O" & c.Row) = bewerkklant.email_01.Text
            MyRange.Range("P" & c.Row) = bewerkklant.geslacht.Text
            MyRange.Range("Q" & c.Row) = bewerkklant.titel.Text
            'MyRange.Range("R" & c.Row) = bewerkklant. .Text
            'MyRange.Range("S" & c.Row) = bewerkklant. .Text
            'MyRange.Range("T" & c.Row) = bewerkklant.init.Text
            MyRange.Range("U" & c.Row) = bewerkklant.voornaam.Text
            MyRange.Range("V" & c.Row) = bewerkklant.tussenvoegsel.Text
            MyRange.Range("W" & c.Row) = bewerkklant.achternaam.Text
            'MyRange.Range("X" & c.Row) = bewerkklant. .Text
            'MyRange.Range("Y" & c.Row) = bewerkklant. .Text
            'MyRange.Range("Z" & c.Row) = bewerkklant. .Text
            MyRange.Range("AA" & c.Row) = bewerkklant.cp_telefoon.Text
            MyRange.Range("AB" & c.Row) = bewerkklant.cp_mobiel.Text
            MyRange.Range("AC" & c.Row) = bewerkklant.cp_email.Text
            MyRange.Range("AD" & c.Row) = bewerkklant.functie.Text
            MyRange.Range("AE" & c.Row) = bewerkklant.afdeling.Text
            MyRange.Range("AF" & c.Row) = bewerkklant.type_klant.Text
            MyRange.Range("AG" & c.Row) = bewerkklant.klant_van.Text
            MyRange.Range("AH" & c.Row) = bewerkklant.hoe.Text
            MyRange.Range("AI" & c.Row) = bewerkklant.brief.Text
            MyRange.Range("AJ" & c.Row) = bewerkklant.klantnummer.Text
        End If
    Next
End If

'beveilig blad weer
Sheets("klantgegevens").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

'tegen flikkeren van beeldscherm
Application.ScreenUpdating = True
naam1 = bewerkklant.klant.Text & ", contactpersoon: " & bewerkklant.voornaam.Text & " " & bewerkklant.tussenvoegsel.Text & " " & bewerkklant.achternaam.Text
naam2 = bewerkklant.klant.Text & ", contactpersoon: " & bewerkklant.voornaam.Text & " " & bewerkklant.achternaam.Text

If bewerkklant.tussenvoegsel.Text <> "" Then
    MsgBox ("Gegevens van " & naam1 & " zijn gewijzig!")
Else
    MsgBox ("Gegevens van " & naam2 & " zijn gewijzig!")
End If


End Sub

Zit het probleem mogelijk in de kolommen die worden overgeslagen??
 
Laatst bewerkt:
Ik heb nu geen tijd, maar zal er vanavond naar kijken (als anderen dat dan nog niet gedaan hebben).
 
Klant toevoegen

@zapatr alvast bedankt voor je moeite, hoop dat je mij verder kan helpen.

Het toevoegen van een klant is ondertussen gelukt.
Het blijkt dat de macro / VBA 'problemen' heeft met de tabel van Excel (2013)
Ik heb de tabel omgezet naar een normaal gegevensblad.

Omdat er een aantal kolommen inzitten met formules bepaal ik met
Code:
legeregel = MyRange.Cells(Rows.Count, 1).End(xlUp).Offset(1).Row

De eerste lege cel in kolom A om vervolgens alle juiste waarden te plakken.
En dat werkt..... :)

Dus bij het wijzigen zit het 'probleem' in het selecteren van de juiste regel die voldoet aan de ingestelde voorwaarden, dwz de 3 keuzen die gemaakt zijn.
Als iemand mij kan helpen om die regel geselecteerd te krijgen dan ben ik je heel dankbaar :rolleyes:
 
Bewerken lukt nu ook, maar waarom??

Ik heb nu het bewerken ook werkend maar ik snap niet goed waarom het nu wel werkt.

Ik heb de gehele code van de bewerkklant_module in de wijzig_Click code gezet.
En nu werkt het wel ??? :shocked:

Wie kan mij wijzer maken waarom dezelfde code onder het formulier zelf wel werkt maar als ik het als module oproep niet?
Want bij het originele bestand personeel.xls staat het wel gewoon als aparte module in het bestand.
 
Laatst bewerkt:
Figaro,
dat hele bestand is zo'n ratjetoe van code die op elkaar inspeelt, dat er haast niet uit te komen is. Ik weet niet of het bestand oorspronkelijk zo was of dat de wijzigingen van jou zijn, maar dat doet er niet toe. Er staan veel overbodige zaken in; er worden bv. gegevens aan 26 variabelen toegewezen en die variabelen worden vervolgens nergens gebruikt. Verder moet je zoveel mogelijk, maar zeker als je in de opbouwfase zit, geen code toevoegen die foutmeldingen onderdrukt; in die fase heb je die meldingen juist hard nodig om de fouten er uit te halen. Als ik jou was zou ik helemaal opnieuw beginnen met 1 userform, daar de code voor schrijven en als die werkend is, dan verder werken. Dat lijkt mij gemakkelijker en handiger dan in je huidige bestand de fouten er uit te halen.
 
Ondanks de ratjetoe heb ik toch besloten het zo te laten.
Het werkt alleen ik weet niet waarom nu wel.
Voor mijn doeleinden is het prima zo, ik kan gegevens weergeven, aanpassen, verwijderen en nieuwe toevoegen.
Ook het vanuit andere bestanden van dit bestand gebruik maken lukt nu ook.

Het zal allemaal vast beter en sneller kunnen maar mij ontbreekt de kennis.
En mijn collega's zijn voorlopig geholpen.

@zapatr, in ieder geval bedankt voor de moeite.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan