Klantnummer zoeken (Userform)

  • Onderwerp starter Onderwerp starter Tsw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Tsw

Gebruiker
Lid geworden
5 dec 2011
Berichten
183
Goedemiddag,

Code:
Code:
Private Sub TBKlantnummer_Change()

Dim code As Range
    With Worksheets("klanten")
    Set code = .Range("A:AA").Find(ComboBox1.Value, LookIn:=xlValues, Lookat:=xlWhole)
        For i = 2 To 27
            Me("TextBox" & i) = .Cells(code.Row, i)
        Next
        For i = 28 To 29
        
            Me("Checkbox" & i) = .Cells(code.Row, i)
        Next
    End With

End Sub



Ik wil in TBklantnummer het klantnummer invullen, en dat dan de overige textboxxen + Checkboxen worden gevuld.
Eerst was de TBklantnummer een Combobox en hiermee ging het perfect. Totdat de klanten lijst te lang werd en het onoverzichtelijk werd.

Nu wil ik het klantnummer invullen in een Textbox (TBklantnummer) en dat de overige gegevens worden ingevuld. Een klantnummer bestaat altijd uit 4 cijfers. en staat in de database (tabblad klanten)

Nu is het volgende probleem:
Als ik begin te typen de textbox krijg ik meteen een foutmelding omdat hij deze niet vind. (omdat ik niet de kans krijg om 4 cijfers in te typen. Hij zoekt al gelijk bij 1 cijfer. Nu wil ik dat die foutmelding er niet komt te staan en dat ik gewoon door kan typen tot dat ik 4 cijfers in de textbox heb staan. En aan de hand daar van kunnen dan de overige automisch worden aangevuld.

Ook moet wanneer de 4 cijferige code niet voorkomt in mijn database, dat hij dan de overige textboxen + checkboxen leeg laten. Zodat dit gelijk opvalt.

Is hier iets in mogelijk?

Bvd.
 
Wat kan er onoverzichtelijk aan een combobox zijn ?

Je gooit dan de slimste optie weg.
 
Snb:

Daar heb je gelijk in eigenlijk. :confused:

Code:
Private Sub ComboBox1_Change()
Dim code As Range
    With Worksheets("klanten")
    Set code = .Range("A:AA").Find(ComboBox1.Value, LookIn:=xlValues, Lookat:=xlWhole)
        For i = 2 To 27
            Me("TextBox" & i) = .Cells(code.Row, i)
        Next
        For i = 28 To 29        
            Me("Checkbox" & i) = .Cells(code.Row, i)
        Next
    End With
End Sub

Dan kom ik bij deze code uit.

Alleen als ik hier een klantcode dat niet bestaat invoer krijg ik een foutmelding.
Eigenlijk zou ik dan een melding willen hebben dat de klantcode niet bestaat. En dan dan weer alles leeg is.

Misschien is deze weg dan eenvoudiger.
 
Lijkt mij ook
Wat kan er onoverzichtelijk aan een combobox zijn ?
Je gooit dan de slimste optie weg.
En dit lijkt mij ook al niet te kloppen volgens uw vraag.
Code:
Private Sub TBKlantnummer_[COLOR="#FF0000"]Change[/COLOR]()

Dim code As Range
    With Worksheets("klanten")
    Set code = .Range("A:AA").Find([COLOR="#FF0000"]ComboBox1[/COLOR].Value, LookIn:=xlValues, Lookat:=xlWhole)
        For i = 2 To 27
            Me("TextBox" & i) = .Cells(code.Row, i)
        Next
        For i = 28 To 29
        
            Me("Checkbox" & i) = .Cells(code.Row, i)
        Next
    End With

End Sub
Post anders eens een vb bestandje dan kijk eens of ik je leven makkelijker kan maken.
 
Bedankt, ik ga het toch anders aanpakken, waardoor ik er zelf ook makkelijker uit kom.

Alleen nog een ander ding:

Bekijk bijlage VoorbeeldA.xlsm

Het bestand hierboven is een voorbeeld bestand.
In Userform zitten 3 knoppen: Nieuw, opslaan en opzoeken

Nu wil ik nog 2 dingen er uit hebben.:

1. Als ik in ComboBox1 een waarde invul die al voor komt in kolom A van werkblad 'Klanten'.
En ik klik op nieuw moet hij een foutmelding geven:
"Klantnummer bestaat al, kies een ander nummer".

2. Als ik een klantnummer invul wat niet bestaat vliegt hij er nu uit.
Als de klantnummer niet bestaat moet hij met de volgende melding komen:
"Klantnummer niet gevonden, kies een ander nummer".

Is dit mogelijk met een toevoeging aan mijn code. Zonder dat mijn code helemaal word aangepast.
Zodat hij voor mij ook nog goed leesbaar blijft zonder dat ik mijn eigen code niet meer begrijp.

bvd.
 
Code:
Als ik in ComboBox1 een waarde invul die al voor komt in kolom A van werkblad 'Klanten'.
En ik klik op nieuw moet hij een foutmelding geven:
"Klantnummer bestaat al, kies een ander nummer".

Voorkom overbodige meldingen. gebruik combobox1.style : dropdownlist
 
Code:
Als ik in ComboBox1 een waarde invul die al voor komt in kolom A van werkblad 'Klanten'.
En ik klik op nieuw moet hij een foutmelding geven:
"Klantnummer bestaat al, kies een ander nummer".

Voorkom overbodige meldingen. gebruik combobox1.style : dropdownlist

Dat kan niet, want via ComboBox1 moet ik ook nieuwe klantnummers invoeren.
Via combobox1 voeg ik ze ook toe. (d.m.v. de knop ''Toevoegen")
 
Als je me een beetje tijd geeft zal ik er een werkbaar bestandje van maken.
Ergens tegen einde dit weekend, morgen heb ik in ieder geval weinig tijd.
Voor deze
Is dit mogelijk met een toevoeging aan mijn code. Zonder dat mijn code helemaal word aangepast.
Zodat hij voor mij ook nog goed leesbaar blijft zonder dat ik mijn eigen code niet meer begrijp.
Ik schrijf mijn code altijd dat het begrijpbaar voor iedere beginnende VBAer, in veel gevallen kan het dan wel korter(mooier) maar meestal kunnen de TSers (toppicstarters,vraagstellers:)) het dan aanpassen naar hun eigen bestand.
 
gast0660:

Ik ben benieuwd, ik wacht dat wel even af.

@snb:
Ik ben op die site wel geweest, maar sommige formules daar zijn wel heel beknopt geschreven waar ik er met mijn kennis niet uit kom.
Omdat ik dan niet precies weet waar ik mee bezig ben kan ik dat niet eenvoudig aanpassen.
Ik moet nog iets makkelijker beginnen, misschien wel intressant als ik er iets meer kennis van heb.
 
Niet echt, ik was vergeten dat het bij ons jaarmarkt is tot en met vandaag, waarbij ik bepaalde verplichtingen heb.
Vbtje komt eraan met een paar dagen vertraging.
 
Laatst bewerkt:
Hoi,
Kijk eens als je hier mee verder kan.
(toch nog wat tijd gevonden):)
In de textbox 'zoeken' vul je een klantnummer in. (je krijgt resultaten vanaf 2 cijfers)
Maak daarna je keuze in de listbox.
Laat maar iets weten als er nog vragen zijn.
 

Bijlagen

Hoi,

Alvast bedankt voor de tijd.
Opzicht werkt dit mooi. Maar eigenlijk wil ik iets anders.

Ik wil in de listbox het klantnummer typen. En als deze bestaat haalt hij deze gegevens op.
En als hij het klantnummer niet kent dat er dan een msgbox komt dat het werknummer niet bestaat.
En dat hij daarna alles weer leeg heeft gehaald.

Dit omdat ik op een ander scherm een nieuw klantnummer wil aanmaken. En een ander scherm alleen voor wijzigen wil gebruiken.

Is hier ook wat in mogelijk?
 
Een beetje meer uitleg gewenst
Dit gaat niet
Ik wil in de listbox het klantnummer typen
De textbox zoeken doet exact
En als deze bestaat haalt hij deze gegevens op.
En als hij het klantnummer niet kent dat er dan een msgbox komt dat het werknummer niet bestaat.
En wat bedoel je hiermee?
Dit omdat ik op een ander scherm een nieuw klantnummer wil aanmaken. En een ander scherm alleen voor wijzigen wil gebruiken.
Je kan geen tweemaal dezelfde userform open hebben staan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan