AW: ersten Zeichen einer Zelle ermitteln
11.02.2013 09:18:00
Klaus
Hi,
du kannst das rng nicht über die ganze Spalte gehen lassen, wie du es probierst. Gib mal zwischendurch rng.select ein und geh in den Debugmodus: du siehst, dass rng nicht die Zelle, sondern die ganze Spalte markiert.
Selbst wenn das behoben ist: willst du wirklich eine Schleife über knapp 66.000 Zeilen laufen lassen? Ich hab den Code mal umgeschrieben:
Letzte Zeile wird gesucht, schleife geht nur von letzter bis erster Zeile, und die Schleife läuft rückwärts (das sollte man beim einfügen / löschen immer so machen) damit das INSERT den Bereich nicht beim Durchlauf vergrößert.
Übrigens: "1300" muss nicht in Anführungsstriche, wenns eine Zahl ist. Dann reicht = 1300.
Option Explicit
Sub test()
Dim spalte As Range
Dim rng As Range
Dim lRow As Long
Dim lZeile As Long
'With ThisWorkbook.Worksheets(1)
' lRow = .Cells(.Rows.Count, 5).End(xlUp).Row
' Set spalte = ThisWorkbook.Worksheets(1).Range("E1:E" & lRow)
'End With
'For Each rng In spalte
'If Left(rng.Value, 4) = "1300" Then
'rng.Offset(1, 0).EntireRow.Insert
'End If
'Next
With ThisWorkbook.Worksheets(1)
For lZeile = lRow To 1 Step -1
lRow = .Cells(.Rows.Count, 5).End(xlUp).Row
If VBA.Left(.Cells(lZeile, 5).Value, 4) = 1300 Then
.Cells(lZeile, 5).Offset(1, 0).EntireRow.Insert
End If
Next lZeile
End With
End Sub
Grüße,
Klaus M.vdT.