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

vba code voor verwerken van gegevens in een lijst via een invulformulier

Status
Niet open voor verdere reacties.

Maurice40

Gebruiker
Lid geworden
30 jan 2014
Berichten
36
Beste mensen,
ik ben niet zo handig met vba-code. Kan iemand me aan de juiste vba-code helpen voor het volgende:
Ik werk met een excel document waarmee ik adressen verwerk. In dit excel document zit een postcodelijst. Deze postcode-lijst wil ik uitbereiden met plaatscodes. Echter, de postcode-lijst bestaat uit 9000 waardes. Het is een hele klus om deze lijst in een keer te vullen, daarom wil ik dit geleidelijk aan doen.
Telkens als ik een nieuw adres verwerk en daarvoor een marco start, wil ik dat het excel document in de postcode-lijst controleert of er een plaatscode gekoppelt zit aan de te verwerken postcode. Zodra er geen plaatscode aanwezig is, dan wil ik dat er een userform (PlaatscodeInvulFormulier) oppopt zodat ik de plaatscode handmatig kan invullen. Deze plaatscode moet dan in de postcodelijst verwerkt worden in kolom 3 in de rij van de te verwerken postcode.
Er moeten dus drie dingen gebeuren:
  1. Controleren of er een plaatscode aanwezig is
  2. Zo nee, PlaatscodeInvulFormulier activeren
  3. De in het formulier ingevulde plaatscode op de juiste plaats in de postcodelijst zetten

Wie kan me hiermee helpen?

Ik heb een voorbeeld excel-document bijgevoegd met daarin een gedeelte van de lijst met postcodes en een userform. (In dit voorbeeldje geeft de userform trouwens een 424 fout, object vereist.. Ik kom er niet achter waarom de userform hier niet werkt, terwijl 'm in een ander document zonder problemen gebruik)
 

Bijlagen

dat is altijd het eerste wat ik doe. Daar kon ik het niet vinden, vandaar dat ik het hier neerleg.
 
@Maurice,
langdurig en grondig zoeken is toch echt niet nodig om postcodebestand(en) te vinden die je gratis kunt dowloaden en importeren in Excel.
Ik heb een voorbeeld excel-document bijgevoegd met daarin een gedeelte van de lijst met postcodes en een userform. (In dit voorbeeldje geeft de userform trouwens een 424 fout, object vereist.. Ik kom er niet achter waarom de userform hier niet werkt, terwijl 'm in een ander document zonder problemen gebruik)
De reden van de foutmelding is dat je in je voorbeeldbestand de naam "NameTextBox" gebruikt voor een textbox, terwijl de textbox de naam "Textbox1" heeft.
 
Laatst bewerkt:
bedankt voor je reactie. Dat was inderdaad het 424 fout-probleem.

Ik ben niet duidelijk genoeg geweest in mijn vraagstelling. Ik heb geen nieuwe postcodelijst nodig. De postcodelijst heb ik (in het bijgevoegde voorbeeld heb ik maar een gedeelte van deze lijst gekopieerd). Ik wil deze lijst uitbereiden met plaatscodes (afkortingen van plaatsnamen) die binnen ons bedrijf gehanteerd worden. Deze codes wijken af van de BAG codes die op het internet te vinden zijn. Om deze plaatscodes te kunnen gebruiken moet ik ze handmatig aan mijn postcode lijst toevoegen, door middel van een userform.
Nu lukt het me wel om via een tekstvak op een userform een plaatscode op een vaste plek op een werkblad te plaatsen, maar dat volstaat in dit geval niet.
Er moet in mijn postcodelijst gezocht worden naar de juiste postcode en als achter deze postcode geen plaatscode staat, dan moet de userform oppoppen zodat ik handmatig achter de desbetreffende postcode een plaatscode kan plaatsen.

Ik hoop dat ik nu helder heb gemaakt.
 

Bijlagen

Laatst bewerkt:
In jouw voorbeeldbestand komen de eerste 4 karakters van elke postcode (de getallen) slechts 1 keer voor, terwijl in werkelijkheid bij elk getal meerdere lettercombinaties voorkomen. Als een in B2 van het blad Werk ingevoerde postcode niet voorkomt in jouw lijst (wat in jouw voorbeeld het geval is), dan moet je die dus invoegen en dus gaan zoeken waar die in de lijst moet worden ingevoegd. Als je de codes op volgorde wil houden, moet je dan zowel op het cijfer- als lettergedeelte van de postcode zoeken, resp. LINKS(Werk!B2;4) en rechts(werk!B2;2). Op de plaats van het gevonden rijnummer voeg je dan een lege regel in waarin je dan in kolom A het cijfer- en in kolom B het lettergedeelte van Werk!B2 kunt plaatsen en in kolom C de in de userform ingevulde plaatscode. Als je op voorhand alle postcodes waarmee je te maken kunt hebben, al invoert, dan maakt het dat natuurlijk veel gemakkelijker. Mocht je toch nog van een postcodelijst gebruik willen maken, dan kun je die o.a. hier vinden: http://www.postcodedata.nl/download/
 
Bedankt voor je reactie. Ik maak idd gebruik van een 4 digit postcodelijst. Dat is voor mij voldoende. Er hoeven geen extra postcodes in de lijst toegevoegd te worden. In feite moet er in de postcode lijst gezocht worden op de eerste 4 digits van de in B2 van het blad Werk ingevoerde postcode.
 
En dan wil je in C-kolom daar een plaatscode aan toevoegen?
 
Voor de code behorend bij de Ok-knop zou je dit kunnen gebruiken, ervan uitgaande dat de cijfers van de postcode in B2 van het blad Werk ook voorkomen in kolom A van het blad Postcode (anders zou daarop gecontroleerd moeten worden).
Code:
Private Sub OKButton_Click()
Dim getal, m As Integer
getal = Left(Sheets("Werk").Range("B2").Value, 4)
m = WorksheetFunction.Match(getal, Sheets("Postcode").Range("A1:A10000"))
Sheets("Postcode").Cells(m, 3).Value = TextBox1.Value
Unload Me
End Sub
 
De code voor de knop werkt perfect.

ervan uitgaande dat de cijfers van de postcode in B2 van het blad Werk ook voorkomen in kolom A van het blad Postcode (anders zou daarop gecontroleerd moeten worden).
Mijn postcode lijst bevat alle mogelijke combinaties met 4 cijfers, dus dit zou hiermee ondervangen zijn.

Rest nog stap 1. De userform moet alleen getoond worden als er nog geen plaatscode aanwezig is. Waarschijnlijk moet die controle plaatsvinden bij onderstaande code.

Code:
Sub Show_PlaatscodeInvulFormulier()
PlaatscodeInvulFormulier.Show
End Sub

Als de plaatscode aanwezig is in de lijst, hoeft de Sub Show_PlaatscodeInvulFormulier() niet uitgevoerd worden en moet Sub Bedankt() gestart worden.

Code:
Sub Bedankt()
    MsgBox "Bedankt voor de hulp!!"
End Sub
 
Code:
Global pRow As Integer
Sub Show_PlaatscodeInvulFormulier()
    PostCodeRow = Application.Match(Left(Sheets("Werk").Range("B2").Value, 4), Sheets("Postcode").Columns(1), 0)
    If IsError(PostCodeRow) Then MsgBox "Postcode NIET gevonden!!": Exit Sub
    If Sheets("Postcode").Cells(PostCodeRow, 3) = vbNullString Then
        pRow = PostCodeRow
        PlaatscodeInvulFormulier.Show
    Else
        MsgBox "Bedankt voor de hulp!!"
    End If
End Sub

En in userformmodule
Code:
Private Sub OKButton_Click()
'Transfer information
    Sheets("Postcode").Cells(pRow, 3).Value = TextBox1.Text
    Unload Me
End Sub
 
Laatst bewerkt:
Als ik naar de code kijk ziet het er altijd zo logisch uit, bijna Kunst. Bedankt. Werkt Super.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan