Hallo Thino,
dein Makro ist nur bruchstückhaft, was mir aber auffällt:
Do Until .Cells(z, "cp") = vbNullString
If .Cells(z, "cp") = "X" Then
Ich nehme mal an, dass cp eine Variable ist, und die dürfte dann nicht in Anführungszeichen stehen:
Do Until .Cells(z, cp) = vbNullString
If .Cells(z, cp) = "X" Then
Du schreibst:
im Blatt "Übersicht" soll der Wert in Zeile B11 bis BG11gelöscht
Im Makro wird dieses Blatt zwar selektiert, aber der vbNullString wird in das Arbeitsblatt "gleise" geschrieben:
With ThisWorkbook.Worksheets("gleise")
Außerdem ist die cells-Anweisung in deiner Do-Schleife falsch:
entweder schreibst du
.Cells(11, 2) = vbNullString 'B11
oder
.Range("B11") = vbNullString
Den Inhalt einer Zelle kannst du auch mit Clear bzw. ClearContents löschen:
Cells(11, 2).ClearContents
Range("B11").ClearContents
Die Zelle CP5 soll die Bedingung für Zelle B11 und Zelle CP6 für Zelle E11 usw.
In deiner Schleife werden aber die Zellen B11, E11 usw. gelöscht, wenn die Bedingung Cells(z, cp) = "X" erfüllt ist.
Um den Inhalt der Zelle B11 zu löschen, wenn in CP5 ein X steht, würde ich folgenden Code benutzen:
If Worksheets("Übersicht").Cells(5, 94) = "X" Then Worksheets("Übersicht").Cells(11, 2).ClearContents
Falls ich dich richtig verstehe, probiere mal das folgende Makro aus:
Sub loeschen()
Dim zeile, z As Long
For zeile = 5 To 24
If Worksheets("Übersicht").Cells(zeile, 94) = "X" Then Worksheets("Übersicht").Cells(11, 2 + 3 * z).ClearContents
z = z + 1
Next zeile
End Sub
Probiere es aber erst einmal in einer Testabelle.
Gruß
M.O.