Opslag via makro

Jeg har i del artikler beskæftiget mig med forskellige former for opslag, mens så vidt jeg husker, er det første gang, det sker  via en makro.. I det konkrete tilfælde er udfordringen endvidere den, at "opslagsværdien" ikke udgør hele den tekst, der skal findes. I dette tilfælde indtastes et tal i celle A1 i Ark2 i en projektmappe, 200. I Ark1 i samme mappe finbdes i C-kolonnen nogle tekster af typen (Jan (100), Per (200), Jan (300), Ida (400). Teksterne kan være ens, men tallene i parentesen er entydige. Der er således kun én række, der opfylder betingelsen, at 200 skal forekomme. Hvis det ønskede tal findes i en række, skal værdien fra samme rækkes e-kolonne placeres i Ark2, celle D5. Makroen er ganske kort. Den kan afspilles som en almindedlig makro, eller som i dette tilfælde placeres på en kommandoknap i et ark.

Private Sub CommandButton1_Click()
    Dim FindTxt As String
    FindTxt = Sheets(2).Range("a1")
    For Each c In Sheets(1).Range("c1:c100").Cells
        If InStr(1, c.Value, FindTxt) > 0 Then
            Sheets(2).Range("d5") = c.Offset(0, 2).Value
        End If
    Next c
End Sub


Først findes den værdi, der skal søges efter, altså det tal, der er indtastet i Ark2, celle A1. Denne værdi gemmes i en variabel.
Dernæst gennemløbes alle cellerne i Ark1, celle C1 til C100, for at undersøge om den pågældende talværdi står et sted i cellen. Funktionen Instr() læser indholdet af cellen fra første position. Hvis den ønskede værdi findes,  returneres placeringen af denne som et tal, der er større end 0. Hvis dette er tilfældet, altså at returværdien fra Instr() er større end 0, tages værdien to celler længere til højre (e-kolonnen) og denne værdi placeres i Ark2, celle D5, hvilket vart det ønskede.

En løsning, hver der bruges en almindelig opslagsformel kan ses i Småtippet: Opslag, hvor det, der søges efter, kun er en del af det, der søges i.

- Retur til makroer -
- Retur til Excel -