Avatar billede Hestehat Seniormester
30. maj 2013 - 13:25 Der er 9 kommentarer og
1 løsning

Lopslag i VBA

Hej,

Jeg har et ark hvor der er tastet postnumre i en del felter.

Kan det lade sig gøre at lave et stykke VBA kode, der tager det enkelte felt, laver et lopslag for at finde ud af hvilken by det hører til og skriver det i det felt hvor den i første omgang fik postnummeret.

Altså, læser postnummeret i A1, laver Lopslag og skriver resultatet i A1?
Avatar billede Mads Larsen Nybegynder
30. maj 2013 - 15:59 #1
Måske du kan bruge dette til noget :)
Det skal sættes ind under arket.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("C1") Then
        If IsNumeric(Target.Value) Then
            Dim Tabel As Range
            Set Tabel = Range("A1:B16")
            Svar = Application.VLookup(Target, Tabel, 2, False)
            Target = Svar
        End If
    End If
End Sub
Avatar billede Hestehat Seniormester
30. maj 2013 - 21:51 #2
Jeg skal nok lige hjælpes lidt her ;)

Kan man sætte den her kode ind i en knap? Altså, sådan at den først skifter postnumre ud med bynavne, når man trykker på knappen?
Avatar billede Mads Larsen Nybegynder
31. maj 2013 - 08:11 #3
Ja det kan du godt.

Så sætter du koden ind ved knappen.

Opret knap, double klik på den, og indsæt koden - evt. tilret koden lidt ;) medmindre det passer med det skal være i C1 og selve tabelen er i A1:B16..

    If IsNumeric(Range("C1").Value) Then
            Dim Tabel As Range
            Set Tabel = Range("A1:B16")
            Svar = Application.VLookup(Range("C1"), Tabel, 2, False)
            Range("C1") = Svar
    End If
End Sub
Avatar billede Mads Larsen Nybegynder
31. maj 2013 - 08:13 #4
Hov der skal lige fjernes den nederste linie "End Sub" den skulle gerne være der automatisk når du trykker på knappen.
Avatar billede Hestehat Seniormester
03. juni 2013 - 21:45 #5
Jeg skal lige starte med at beklage at det har taget så lang tid for mig at svare. Men, du skal ihvertfald have mange tak for hjælpen!

Skriv lige et svar, så får du point!
Avatar billede Hestehat Seniormester
03. juni 2013 - 23:28 #6
Jeg har måske været lidt for hurtig på aftrækkeren. Jeg har lige siddet og kigget lidt rundt efter andre eksempler.

Noget der virker simplere er nedenståend:

    Table1 = Ark1.Range("E7:E40") ' Område hvori der skal søges
    Table2 = Ark4.Range("C1:D13000") ' Område hvori svaret skal findes


    For Each xCell In Table1
       
        xCell.Value = Application.WorksheetFunction.VLookup(xCell, Table2, 2, False)
       
    Next xCell

Hvis jeg følger med når jeg afvikler koden, så kan jeg se at den får de postnummer værdier den burde have. Men, den skriver ikke bynavnet i den celle den får værdien fra. Kan du se hvad jeg gør galt?
Avatar billede Mads Larsen Nybegynder
04. juni 2013 - 08:20 #7
Har du mere af koden?
For den stump du har givet mig kan jeg ikke få til at virke... :/
Avatar billede Mads Larsen Nybegynder
04. juni 2013 - 08:30 #8
Prøv evt. med Application.VLookup istedet for Application.WorksheetFunction.VLookup - Det giver mindre fejl ved mig..

Det her virker fint ved mig


Sub Test()
Dim Table1 As Range
Dim Table2 As Range

Set Table1 = Range("A1:A10") ' Område hvori der skal søges
Set Table2 = Range("C1:D130") ' Område hvori svaret skal findes


    For Each xCell In Table1.Cells
        If IsNumeric(xCell.Value) Then
            xCell.Value = Application.VLookup(xCell, Table2, 2, False)
        End If
    Next
End Sub
Avatar billede Hestehat Seniormester
07. juni 2013 - 18:40 #9
Det er lige præcis det jeg gerne vil have!

Tak for det!

Send lige et svar, så jeg kan give dig point.

Og igen, beklager den lange svar tid!
Avatar billede Mads Larsen Nybegynder
10. juni 2013 - 07:58 #10
Her er et svar :)

Beklager den lange svar tid ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester