Avatar billede thomasolsen Nybegynder
09. juli 2001 - 11:58 Der er 12 kommentarer og
2 løsninger

Find eller søg

Jeg skal bruge en macro eller en formel som kan finde
Tekst eks. \'D , \'N , \'-. Gerne en VBA macro.

Med Venlig Hilsen
Thomas
09. juli 2001 - 12:36 #1
Det kan vi nok finde ud af, men lidt flere oplysninger vil være rart. Hvad skal der ske, når strengen er fundet ?
Hvilket område skal der søges igennem ?
Andre oplysninger som du synes kan være relevante.
Avatar billede thomasolsen Nybegynder
09. juli 2001 - 21:23 #2
Den skal søge et ark og komme ud med et celle/række nr. på alle dem der er opfyldt.
09. juli 2001 - 21:25 #3
OK - det kigger jeg lige på.
Avatar billede thomasolsen Nybegynder
09. juli 2001 - 21:36 #4
mange tak
09. juli 2001 - 21:49 #5
Here goes

Sub Finder()
Dim rCell As Range
Dim Row() As Integer, iX As Integer, iZ As Integer
   
    Application.ScreenUpdating = False
    \'Ændre A1:A1000 til det område du ønsker gemmensøgt.
    For Each rCell In Range(\"A1:A1000\")
        If rCell = \"\" And rCell.Offset(1, 0) = \"\" Then Exit For
        If UCase(Left(rCell, 1)) = \"D\" Or UCase(Left(rCell, 1)) = \"N\" Or Left(rCell, 1) = \"-\" Then
            ReDim Preserve Row(iX)
            Row(iX) = rCell.Row
            iX = iX + 1
        End If
    Next rCell

    \'Ændre D1 til den celle hvor du ønsker rækkenumrene skrevet.
    \'Her skrives i D1 til D??? alt efter antal fundne
    Range(\"D1\").Select
    For iZ = 0 To iX - 1
        ActiveCell.Offset(iZ, 0).Value = Row(iZ)
    Next iZ

Application.ScreenUpdating = True
Set rCell = Nothing
End Sub
Avatar billede thomasolsen Nybegynder
10. juli 2001 - 01:51 #6
Den kan ikke finde Cellerne med D og N.
Jeg tog det du skriver og satte det ind i et modul og afspillet det som en VBA macro, uden held.
Thomas
Avatar billede thomasolsen Nybegynder
10. juli 2001 - 01:52 #7
Jeg er rimelig ny i VBA, men har lavet nogle VBA macroer
10. juli 2001 - 10:46 #8
Hvis D,N eller - er den første karakter i cellen, så bliver den fundet - det er tilsyneladende ikke sådan du ønsker den skal være !!

Skal den finde D,N,- uanset placeringen ? eller hva\', for makro\'en virker fint hvis d,n,- skal findes i starten.
Avatar billede thomasolsen Nybegynder
12. juli 2001 - 12:19 #9
jeg kopier texten ind i et modul og der efter skriver D eller N i en Celle, kører macroen sker der ingen ting. Hvis jeg steper igennem macroen ser det sådan ud:
For Each rCell In Range(\"A1:A1000\")
If rCell = \"\" And rCell.Offset(1, 0) = \"\" Then
Exit For
Range(\"D1\").Select
For iZ = 0 To iX - 1
Application.ScreenUpdating = True
Set rCell = Nothing
End Sub

Thomas
12. juli 2001 - 14:04 #10
Har du skrevet D, N i kolonne A ???

Makro\'en løber igennem A1:A10000 - ændre dette område til det du skal have checket !!
Avatar billede thomasolsen Nybegynder
13. juli 2001 - 12:42 #11
Jeg har muligvis fundet fejlen!!!!
Avatar billede thomasolsen Nybegynder
13. juli 2001 - 14:26 #12
Nu har jeg fået den til at finde Cellerne men den skriver kun 2 som resultat i cellerne, Kan det laves så den kan skrive f.eks AG23 altså hele stien???

Et andet spm. hvad laver den til sidst
    For iZ = 0 To iX - 1
        ActiveCell.Offset(iZ, 0).Value = Row(iZ)
    Next iZ

Application.ScreenUpdating = True
Set rCell = Nothing
Avatar billede capital Nybegynder
16. juli 2001 - 21:32 #13

Hej...

Jeg tillader mig lige at blande mig lidt i legen. Min version bygger stadig på flemmingdahl\'s kode. Dog med den undtagelse, at jeg også finder celleadresser, hvor \"D\", \"N\" eller \"-\" ikke står på første position eller sidste position.
Jeg forudsætter, at man befinder sig på det ark, som man ønsker at gennemsøge for bogstav. Endvidere har jeg forudsat, at man IKKE kan finde mere 65536 forekomster af \"D\", \"N\" eller \"-\".

Sub Finder_version_2()
 
  Dim rCell As Range
  Dim Row() As String
  Dim iX As Integer, iZ As Integer
 
  \' *capital *
  Dim wsRes As Worksheet
  Dim i As Long
   
  \' Gennemløb af alle udfyldte celler
  For Each rCell In ActiveSheet.UsedRange
     
    \' Check på indholdstype samt str *capital*
    If Not IsNumeric(rCell.Value) And InStr(1, rCell.Value, \"-\", vbTextCompare) <> 0 _
          Or InStr(1, rCell.Value, \"D\", vbTextCompare) <> 0 Or _
          InStr(1, rCell.Value, \"N\", vbTextCompare) <> 0 Then
   
      ReDim Preserve Row(iX)
      Row(iX) = ActiveSheet.Name & Chr(32) & rCell.Address \' henter adressen *capital*
      iX = iX + 1
     
    End If
   
  Next rCell
  Set rCell = Nothing
 
  \' indsæt nyt nyt ark til indlæsning af resultat
  ActiveWorkbook.Worksheets.Add After:=Worksheets(ActiveWorkbook.Worksheets.Count)
  Set wsRes = ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
 
  \' Gennemløb af array og indlæs i nyt ark
  For i = LBound(Row()) To UBound(Row())
    wsRes.Cells(i + 1, 1).Value = Row(i)
  Next i
  Set wsRes = Nothing

End Sub
Avatar billede thomasolsen Nybegynder
17. juli 2001 - 01:09 #14
jeg fordeler pointene, for capital kom med den løsning som jeg skulle bruge.
mange tak. :-)

Thomas
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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