Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aktion bei Textteil in einer Zelle

Aktion bei Textteil in einer Zelle
21.06.2018 09:04:42
Sebastian
Hallo alle zusammen,
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.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktion bei Textteil in einer Zelle
21.06.2018 09:17:49
Nepumuk
Hallo Sebastian,
Range mit Cells bracht immer Obere linke Zelle - untere rechte Zelle. Also, einfach so:
Set Zelle = .Cells(Zeile, 6)

Gruß
Nepumuk
AW: Aktion bei Textteil in einer Zelle
21.06.2018 09:29:26
Sebastian
Hallo Nepomuk und vielen Dank für die Antwort,
dann bekomme ich aber leider den "Laufzeitfehler 438 Objekt unterstützt diese Eigenschaft oder Methode nicht" für den .InStr Befehl. Kann mir da jemand helfen?
AW: Aktion bei Textteil in einer Zelle
21.06.2018 09:35:00
Nepumuk
Hallo Sebastian,
vor InStr darf kein Punkt sein.
Gruß
Nepumuk
AW: Aktion bei Textteil in einer Zelle
21.06.2018 10:01:58
Sebastian
Hallo Nepomuk,
vielen Dank für die Antwort und die Hilfe! Jetzt habe ich zumindest keine Fehler mehr im Code.
Und nachdem ich die If und die ElseIf Bedingungen getauscht habe, stimmt auch das Ergebnis. Nur warum es anders herum nicht funktioniert, verstehe ich nicht.
Grüße, Sebastian
Anzeige

331 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige