Hallo TS,
in meinem Code sind zwei Fehler.
Zum einen ein banaler.
Bei der Arrayzuweisung ist ein Leerzeichen nach Vorname, entferne das dann klappt der Code.
Naja würde klappen wenn da nicht noch ein zweiter Fehler drin wäre
)
Ignorier erstmal den Fehler durch diesen Codeanfang:
Sub SucheUndSchiebe()
Dim Zelle As Range, strZelle As String
On Error Resume Next
dann klappt der Code.
Übrigens, da du lernen willst, ich fand den Fehler indem ich den Code im Editor mit F8 laufen ließ.
Dabei sah ich daß bei der zweiten Prüfung in der For-Schleife der Code wegen Exit Sub ausstieg.
Um erstmal grundsätzlich zu wissen ob das was ich prüfen will auch geprüft habe ich kurzerhand den Code so verändert:
For T = 0 To UBound(arrTitel)
MsgBox UCase(arrTitel(T)) & " - " & UCase(Zelle.Offset(0, T - 1))
If UCase(arrTitel(T)) UCase(Zelle.Offset(0, T - 1)) Then
In der MsgBox sah ich dann Vorname - Vorname und durch diesen Vergleich stieg der Code aus weil für Vba im Gegenteil zu mir beides unterschiedlich ist.
Der rest war einfach um auf den Fehler zu kommen.
Übrigens, da man halt Leerzeichen nicht sieht, die sehr oft Grundübel von problemen sind, mache ich je nachdem, hier hab ich es vergessen zu tun:
Msgbox „#“ & Variable1 & „#“ & " - " & „#“ & Variable1 & „#“
Dann sieht man das sofort.
Zu MsgBox, ja, ich weiß es gibt Debug.Print, das hat sicher auch gewaltige Vorteile gegenüber Msgbox, wird bei langen Schleifen viel effektiver sein.
Mein Tipp an dich, übe den Umgang mit Debug.Print.
In der Beziehung bin ich ein schlechtes Vorbild, ich nutze seit vielen Jahren bzw. an sich immer nur Msgbox.
Gruß
Reinhard