Aktion bei Textteil in einer Zelle
21.06.2018 09:04:42
Sebastian
ich stehe vor einem Problem und weiß leider einfach nicht mehr weiter.
Ich habe ein Makro, das abhängig von Einträgen in einer Spalte (L) bestimmte Werte aus der Zeile (Spalten B,C und F) in ein anderes Arbeitsblatt (Spalten B und C in Spalte A, Spalte F in Spalte B) überträgt. Das funktioniert auch super. Nun ist jedoch ein weiteres Kriterium hinzugekommen: wenn unabhängig vom Eintrag in Spalte L in Spalte F ein bestimmter Textteil "AB/E" steht, sollen wieder die Werte aus Spalte B und C in Spalte A des anderen Arbeitsblattes und die Werte aus Spalten (F und E in Spalte B des anderen Arbeitsblattes übertragen werden.
Leider funktioniert der neue Teil aber überhaupt nicht, da ich schon an der ElseIf Bedingung scheitere...
Hier mal der Code:
Sub Schilder()
Dim Zeile As Long
Dim ZeileMax As Long
Dim ZeileMax2 As Long
Dim n As Long
Dim Zelle As Range
'Bisherige Einträge im Arbeitsblatt Namensschilder werden entfernt
With Worksheets("Schilder")
ZeileMax2 = .UsedRange.Rows.Count
.Range(.Cells(2, 1), .Cells(ZeileMax2, 2)).ClearContents
End With
With Sheets("Hauptliste")
ZeileMax = .UsedRange.Rows.Count
n = 2
'Im Arbeitsblatt Hauptliste wird für alle Zeilen mit Eintragung ab Zeile 2 nach einem x in der _
Spalte L gesucht
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 12).Value = "x" Then
Sheets("Schilder").Cells(n, 1).Value = Sheets("Hauptliste").Cells(Zeile, 2).Value & " " & _
Sheets("Hauptliste").Cells(Zeile, 3).Value
Sheets("Schilder").Cells(n, 2).Value = Sheets("Hauptliste").Cells(Zeile, 6).Value
'oder wenn in der Spalte F "AB/E*" eingetragen ist
Set Zelle = Range(.Cells(Zeile, 6))
ElseIf .InStr(Zelle, "AB/E") > 0 Then
Sheets("Schilder").Cells(n, 1).Value = Sheets("Hauptliste").Cells(Zeile, 2).Value & " " & _
Sheets("Hauptliste").Cells(Zeile, 3).Value
Sheets("Schilder").Cells(n, 2).Value = Sheets("Hauptliste").Cells(Zeile, 6).Value & " - " & _
Sheets("Hauptliste").Cells(Zeile, 5).Value
n = n + 1
End If
Next Zeile
End With
End Sub
Aktuell bekomme ich für die Zeile Set Zelle = Range(.Cells(Zeile, 6)) den "Laufzeitfehler 1004 Die Methide 'Range' für das Objekt '_Global' ist fehlgeschlagen.