Clever-Excel-Forum

Normale Version: [VBA] If Abfrage auf mehrere Zellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

folgende If-Abfrage:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C52:K53")) Is Nothing Then
     
      If Range("F52").Value <= 0 And Range("F53").Value = "JA" Then
      Range("F54").Value = "x"
      Else
      Range("F54").Value = ""
      End If
  End If
  End Sub

Um mir das nun für jede Zelle einzelnd zu ersparen, meine Frage, wie ich das verallgemeinern kann.

Ich möchte diese If-Abfrage jeweils für:
C52 + C53 - dann das "x" in C54
D52 + D53 - dann das "x" in D54
usw.

Danke und Gruss
Hallo Jules,

versuche es mal so:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C52:K53")) Is Nothing Then
        If Cells(52, Target.Column).Value <= 0 And Cells(53, Target.Column).Value = "JA" Then
            Cells(54, Target.Column).Value = "X"
        Else
            Cells(54, Target.Column).Value = ""
        End If
    End If
End Sub
Hallo Klaus-Dieter,

das funktioniert ganz hervorragend!
Noch einen Tipp, wie ich hierbei die Groß-/Kleinschreibung ignorieren kann?
Es rutscht einem ja schnell mal ein "ja" anstatt einem "JA" raus Smile

Danke !
Hallo Jules,

entweder so:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C52:K53")) Is Nothing Then
        If Cells(52, Target.Column).Value <= 0 And Cells(53, Target.Column).Value = "JA" Or Cells(53, Target.Column).Value = "Ja" Then
            Cells(54, Target.Column).Value = "X"
        Else
            Cells(54, Target.Column).Value = ""
        End If
    End If
End Sub

oder du verhinderst über eine Gütigkeitsregel die Eingabe von "Ja"
Or Cells(53, Target.Column).Value = "Ja" hatte ich bereits versucht.
Dann greift aber die erste Abfrage "kleiner als Null" nicht mehr und er setzt mir das X überall dort, wo "Ja" bzw. "JA" steht.

Passt :)

Danke Dir
Hallo,

bei "Ja" passt es nicht!

Gruß Uwe
habe es nun mit:

UCase(Cells(53, Target.Column)) = "JA"

gelöst

Gruss
Hallo Jules,

stimmt, man sollte doch immer testen. Sehe mir das heute Nachmittag noch mal an. Jetzt muß ich erst mal weg.

Hallo Jules,

dann so:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C52:K53")) Is Nothing Then
        If Cells(52, Target.Column).Value <= 0 Then
            If Cells(53, Target.Column).Value = "JA" Or Cells(53, Target.Column).Value = "Ja" Then
                Cells(54, Target.Column).Value = "X"
            End If
        Else
            Cells(54, Target.Column).Value = ""
        End If
    End If
End Sub