VBA Makro gesucht: Inhalt von Zellen löschen wenn eine andere Zelle bestimmten "TEXT" beinhalted?

... komplette Frage anzeigen

4 Antworten

Nur auf Papier geschrieben und nicht getestet:

For Ze = 6 To 150
Inh=Cells (Ze, 18).Value
If InStr (1, Inh, "grün") <>0 Then
Range("I6:J6").ClearContent
Cells (Ze, 12).ClearContent
Cells (Ze, 14).ClearContent
ElseIf InStr (1, Inh, "gelb") <>0 Then
Range("I6:J6").ClearContent
End If
Next

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Garfield0001
08.03.2016, 13:09

das Cells ist falsch ... ersetze es durch Range(Cells (Ze,12), Cells (Ze,14)).ClearContent und für das andere Range (in beiden Fällen) Range(Cells (Ze,9), Cells (Ze,10)).ClearContent

0

Probiere mal das hier:

Sub NobyTree2()

Dim x, y As Integer

   For x = 1 To 150
        If Cells(x, 18).Value = "STATUS1=grün" Then
           
            For y = 9 To 10
                Cells(x, y).Value = ""
            Next y
           
            For y = 12 To 14
                Cells(x, y).Value = ""
            Next y
           
        End If
       
        If Cells(x, 18).Value = "STATUS2=gelb" Then
           
            For y = 9 To 10
                Cells(x, y).Value = ""
            Next y
           
        End If
   
    Next x
       

End Sub

Antwort bewerten Vielen Dank für Deine Bewertung

Sorry, einfacher mit Range.Clear

Sub NobyTree2()
Dim x, y As Integer

    For x = 1 To 150
        If Cells(x, 18).Value = "STATUS1=grün" Then
           
            Range(Cells(x, 9), Cells(x, 10)).Clear
            Range(Cells(x, 12), Cells(x, 14)).Clear
                     
        End If
       
        If Cells(x, 18).Value = "STATUS2=gelb" Then
           
            Range(Cells(x, 9), Cells(x, 10)).Clear
           
        End If
   
    Next x
       

End Sub

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von molekuelx
08.03.2016, 13:23

Wenn ich den Befehl ausführe friert mein Excel ein ... :D

0

Mit IsValue habe ich keine Erfahrung. Ich würde herkömmlich If Target.Value = "STATUS1 = grün" Then abfragen.

Das .Select kannst du dir schenken. Anstelle dessen kannst du schreiben:

Range("I6:J6").ClearContents
Range("L6:N6").ClearContents

Die letzte Herausforderung besteht darin, das über alle Zeilen von 6 bis 150 laufen zu lassen. 

Baue eine For Schleife darum:

Dim i As Integer
For i=6 To 150
...
Next

Deine Befehle, in denen du dich auf Zeile 6 beziehst, änderst du so ab. Beispiel:

Range("I" & i & ":J" & i).ClearContents
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von molekuelx
08.03.2016, 12:59

Vielen Dank schonmal für die schnelle Antwort.

Habe jetzt versucht schonmal das erste umzusetzen, um ersmal nur die Zelle R6 aubzuprüfen:

Private Sub Worksheet_Change(ByVal Target As Range)
'Abfrage, ob Änderung in Zelle A1 erfolgt ist
If Target.Address = "$R$6" Then
    If Target.Value = "STATUS1=grün" Then
        Range("I6:J6").ClearContents
        Range("L6:N6").ClearContents
    End If
End Sub

Leider passiert gar nichts :( Müsste doch eigentlich für die Zeile 6 schon funktionieren oder ?

 

0

Was möchtest Du wissen?