Avatar billede swamboo Seniormester
06. november 2003 - 17:08 Der er 6 kommentarer og
1 løsning

Del søgetekst i usorteret område

Hej gutter og gutinder.

Jeg ville høre om der i vba findes en måde til at gøre følgende:

felt a1:a5 indeholder f.eks:
Køge
Herfølge
Næstved
skagen
Skanderborg

Hvis jeg skrev "FØL" i a6 blev der i b1: -> de resultater hvor "FØL" indgår - i eks. "Herfølge"

Tænkte selv på en for-next på længden af teksten i feltet hvormed man kunne lave en mid-forespørgsel på længden af søgeordet - men er der denne funktion??

Håber i forstod mit ønske - ellers SPØ'R.
Ser frem til jeres svar.
Avatar billede jkrons Professor
06. november 2003 - 17:13 #1
Skal de stå i B1 og nedad? Ellers kan du bare bruge Autofilter på A-kolonnen
Avatar billede jkrons Professor
06. november 2003 - 17:33 #2
Hvis det skal være i VBA er her en løsning:

Sub KopierTilHvis()
    Dim i As Integer
    Dim a As String
    Dim b As String
    Dim c As Object
    Dim d As Byte
   
    i = 1
   
    For Each c In ActiveSheet.Range("a1:a5").Cells
   
        a = c.Value
        b = Range("a6").Value
        d = InStr(a, b)
       
        If d <> 0 Then
            ActiveSheet.Range("b" & i).Value = c.Value
            i = i + 1
        End If

    Next c

End Sub
Avatar billede swamboo Seniormester
06. november 2003 - 18:10 #3
Tak jkrons.
Men der er 2 detaljer som måske kan løses?!?
1) Kan man få den til at glemme at der er forskel på store og små bogstaver?
2) Kan man lave det sådan at man ikke nødvendigvis behøver at trykke enter/flytte markeringen til anden felt før man kører Proceduren??
Avatar billede jkrons Professor
06. november 2003 - 18:57 #4
Ret disse linjer:

        a = UCase(c.Value)
        b = UCase(Range("a6").Value)

Så skelner den ikke mellem store og små.

Du kan ikke få udløst din makro før du tilkendegiver, at du gerne vil. Du kan altså ikke afspille makroen mens du redigerer i cellen. Men du kan få den afspillet, når du trykker enter. Hvis du så gerne vil have markøren til at blive der (i a6) kan du ændre koden til følgende. Den skal ligge i arkets kodemodul. Højreklik på arkfanen og vælg Vis kode. Kopier dette til kodearket:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    Dim a As String
    Dim b As String
    Dim c As Object
    Dim d As Byte
   
    If Target = Range("a6") Then
        i = 1
   
      For Each c In ActiveSheet.Range("a1:a5").Cells
   
          a = UCase(c.Value)
          b = UCase(Range("a6").Value)
          d = InStr(a, b)
       
          If d <> 0 Then
              ActiveSheet.Range("b" & i).Value = c.Value
              i = i + 1
          End If

    Next c
   
    Range("a6").Activate
   
    End If
   
End Sub
Avatar billede stefanfuglsang Juniormester
06. november 2003 - 20:12 #5
og hvis du indsætter Application.sendkeys("{F2}") efter range("a6").activate
så starter du editeringen af A6 igen, hvis det er det du ønsker.
Avatar billede swamboo Seniormester
06. november 2003 - 21:07 #6
Hvis jeg skriver en søgeværdi, og bagefter flytter markøren over for at slette resultaterne får jeg en runtime 13 Type Mismatch i denne linie -> If Target = Range("c1") Then
Gør jeg noget forkert??
Avatar billede jkrons Professor
06. november 2003 - 22:31 #7
Som makroen ser ud lige nu kan du ikke markere en enkelt celle ad gangen. Og du kan faktisk ikke komme ud af A6, fordi koden slutter med at aktivere A6 igen (måske c1 i dit tilfælde). Hvis det er OK, kan du indsætte denne linie lige efter linien If Target... så det kommer til at se således ud:

    If Target = Range("a6") Then
   
        Range("b1:b5").Clear
        i = 1

Så vil makroen selv slette området, hver gang du skriver noget nyt i a6
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