06. november 2003 - 17:08Der 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.
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??
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
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??
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
Synes godt om
Ny brugerNybegynder
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.