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.
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
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
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
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
jeg fordeler pointene, for capital kom med den løsning som jeg skulle bruge. mange tak. :-)
Thomas
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.