vor vielen Jahren habe ich auch schonmal ein bisschen vba aufgezeichnet und nachbearbeitet. Nur soviel zu meinem Kenntnissstand.
Aktuell habe ich in einer Benutzertabelle in der zweiten und dritten Spalte mehrere Informationen untereinander. Um bessere Filtermöglichkeiten zu haben, möchte ich diese Infos trennen. Dazu dupliziere ich die Spalte "B".
Ich suche in der Spalte B nach Mail-Adressen also "@". Bei einem Treffer lösche ich den Inhalt der Zelle in Spalte B und schiebe die "Kopie" in Spalte C eine Zeile nach oben.
Dann gehe ich wieder zurück auf die Spalte "B" und möchte die Spalte weiter durchsuchen, um den nächsten Treffer zu behandeln.
Das ganze passiert in einer Schleife bis zum Spaltenende.
Soweit der Plan. Jetzt der Code:
Columns("B:B").EntireColumn.Select
Selection.Copy
Columns("C:C").EntireColumn.Select
Selection.Insert Shift:=xlToRight
Application.CutCopyMode = False
Dim objCell As Range
Dim FirstRow As Long
Range("B1").Select
With ThisWorkbook.Worksheets(1)
Set objCell = .Cells.Find(What:="@", lookIn:=xlFormulas2, LookAt:=xlPart, SearchOrder:=xlByColumns)
If Not objCell Is Nothing Then
FirstRow = objCell.Row
Do
'objCell.Activate
Selection.ClearContents
ActiveCell.Offset(0, 1).Select
Selection.Cut
ActiveCell.Offset(-1, 0).Select
ActiveSheet.Paste
ActiveCell.Offset(0, -1).Select
Set objCell = .FindNext
Loop Until objCell.Row FirstRow
Set objCell = Nothing
End If
End With
Der erste Durchlauf gelingt perfekt. Beim Aufruf von ".FindNext" bekomme ich aber einen
Laufzeitfehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht.
Die Schleife hatte ich irgendwo abgekupfert und verstehe nicht, warum sie bei mir nicht mehr tut.
Meine Recherchen zu "find" und "Schleifen" gaben jede Menge Ideen, die aber nicht zu meinem Thema gepasst haben.
Vielen Dank für jegliche Unterstützung :)
Gruss, cluemi