Vlookup gebruiken in userform maar met als range; 'namen'

Status
Niet open voor verdere reacties.

PolBE

Gebruiker
Lid geworden
12 okt 2016
Berichten
53
Beste

Ik heb een lijst met postcodes en plaatsen op een sheet (data) staan en dit bereik een naam gegeven , D1_PostPlaatsLijst
In het userform wil ik na het invullen van de postcode (Me.txtPostcode) zoeken naar de juiste plaats (Me.txtPlaats) in de 'range' D1_PostPlaatsLijst
Lijkt niet te lukken, wat is er fout aan de formule?
Bedankt alweer

Code:
Private Sub txtPostcode_AfterUpdate()
    Me.txtPlaats.Value = Application.WorksheetFunction.VLookup(Me.txtPostcode.Value, Range("D1_PostPlaatsLijst"), 2, False)
End Sub

Misschien even vermelden; ik heb (nog) Excel 2003!!
 
Laatst bewerkt:
In VBA heb je geen Excelfunkties nodig en al helemaal geen benoemde gebieden.

Vermijd afterupdate.
Als postcode zonder spatie wordt ingevoerd in kolom A
Als postcode in kolom A en plaatsen in kolom B

Code:
Private Sub txtPostcode_Change()
    if val(txtPostcode)>999 and len(replace(txtpostcode," ",""))=6 then 
       sn=cells(1).currentregion
       c00= replace(txtpostcode," ","")

       for j=1 to ubound(sn)
         if sn(j,1) =  c00 then exit for
       next
       tstplaats=sn(j,2)
    end if
End Sub
 
Laatst bewerkt:
Bedankt snb

Zelf ben ik geen grote kenner van VBA, ik geef het toe, veel knippen en plakken en verder zoeken. :rolleyes:
Deze procedure begrijp ik niet maar ze werkt ook niet, althans bij mij.

Nu, ik begrijp het misschien verkeerd of ik heb iets verkeerd uitgelegd.
Ik heb een userform met allemaal invulvakken, ook één met postcode en één met Plaats.
De bedoeling is dat na het invullen van de postcode, de plaats wordt gezocht in een excel sheet en wordt ingevuld in het userform.
Niet dat dit in kolom A of B komt op een sheet. Nadien als alles is ingevuld wordt dit aan een Excel sheet toegevoegd.
De range waar postcodes en plaatsen staan heb ik een naam gegeven ; D1_PostPlaatsLijst (A6:B250)

PS: tstplaats is wel txtPlaats bij mij maar ook na aanpassing werkt dit niet.

Sorry voor het ongemak, als het niet kan laat ik het apart in elk een combobox staan zodat hier de juiste Postcode en Plaats kan ingevuld worden, dat lukt wel maar is niet aan elkaar gelinkt natuurlijk.

Bedankt
 
Zonder voorbeeldbestand krijg je natuurlijk de basisprincipes aangereikt die je zelf even zal moeten aanpassen naar een wel werkend iets. Als je iets niet begrijpt dan zal je wat (meer) onderzoek moeten doen.

De code van snb gaat uit van de Nederlandse postcodenotatie van 4 cijfers en 2 letters. Los van een aantal letters die niet gebruikt mogen worden is deze altijd 9999ZZ (4 cijfers gevolgd door twee letters) Sommige mensen hebben de gewoonte om de spatiebalk iets te vaak te gebruiken en deze spaties moet je dmv Replace even weghalen om een vergelijk mogelijk te maken. Dus >999 = 1000 dus 4 cijfers. Als de lengte van het de totale string(zonder spaties gelijk is aan 6 dan heb je een 'geldige' 'NL postcode' en kan het zoeken beginnen. (de controle is natuurlijk niet volledig maar het gaat om het idee)

In sn wordt vanuit het actieve blad vanaf A1 een array geladen met in de eerste kolom de postcode en in de tweede kolom de plaatsnaam. Als de gegevens op een ander blad staan en ergens anders zweven dan zal je dus het bereik van sn aan moeten passen. Waarschijnlijk sn = sheets("postcodebestand").cells(6,1).currentregion.

Er zijn meerdere wegen die naar Rome leiden maar zonder voorbeeldbestand mag je hier even mee aan de gang;)
 
Beste snb , VenA

Bedankt voor het aanreiken van de formule maar het wil niet lukken. ik heb een klein bestandje gemaakt van mijn bestand dat ik heb, alleen postcode en plaats.
VenA; jij zei dat de Nederlandse postnummers uit 6 tekens bestaat, ik woon in België en heb ook dit al aangepast naar 4. Wij hebben alleen 4 cijfers maar ook dit lukt niet
Misschien begrijp ik te weinig van deze formule maar met het voorbeeldje komen jullie er misschien wel uit.
Bedoeling is dus als je een postnummer kiest, de plaats in het vakje plaats komt. De lijst met postnummers staat op sheet 'data' en de range van postcode en plaats heet 'D1_PostPlaatsLijst'
Als dit lukt is het voldoende.
Bedankt bij voorbaat
Pol

Bekijk bijlage Map16bis.xls

Kleine rechtzetting: code staat bij: 'txtPostcode_Change()' maar moet zijn 'ComboBoxPostcode_Change()' sorry, dit heb ik juist gemerkt maar de code loopt vast op laatste regel "Me.txtPlaats = sn(j, 2)"
 
Laatst bewerkt:
Als je een gedefinieerde naam gebruikt dan moet het zo [naam] of Range("naam") Zonder gaat ook prima.

Code:
Private Sub ComboBoxPostcode_Change()
  If IsNumeric(ComboBoxPostcode) And Len(ComboBoxPostcode) = 4 Then
    sn = Sheets("data").Cells(6, 1).CurrentRegion
    For j = 1 To UBound(sn)
      If sn(j, 1) = Val(ComboBoxPostcode) Then Exit For
    Next
       txtPlaats.Value = sn(j, 2)
    End If
End Sub

Zo kan ook
Code:
Private Sub ComboBoxPostcode_Change()
  If IsNumeric(ComboBoxPostcode) And Len(ComboBoxPostcode) = 4 Then
    txtPlaats.Value = Sheets("data").Columns(1).Find(ComboBoxPostcode).Offset(, 1)
  End If
End Sub
 
VenA

Hartelijk dank voor de oplossing, hier heb ik lang naar gezocht. Het zal echter wil liggen aan mijn beperkte kennis ;)

Groeten
Pol

Ik ga deze vraag sluiten maar het kan zijn dat ik nog wel terugkom bij een volgend probleempje.
Jullie zijn echt een grote hulp, wat ik ten zeerste apprecieer.
 
Mooi dat het opgelost. Het geeft wel weer aan dat je met een klein voorbeeldbestandje direct een passende oplossing krijgt. Maar dat brengt de beperkte kennis natuurlijk niet naar een hoger niveau:)
 
Of:
Code:
Private Sub ComboBoxPostcode_Change()
On Error Resume Next
 txtPlaats = ComboBoxPostcode.Column(1)
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan