Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zwei Bedingungen für eine Zelle

Zwei Bedingungen für eine Zelle
21.02.2023 08:50:49
Elias
Guten Morgen liebe Community,
folgende Problemstellung: Ich möchte für die Eingabe in einer Zelle zwei Bedingungen festlegen. Wenn in einer anderen Zelle ein bestimmter Wert ausgewählt wird, dann sollen die Grenzen min 6 und max 40 festgelegt werden. Wenn ein anderer bestimmter Wert ausgewählt wird, dann sollen die Grenzen 15 und 40 festgelegt werden. Wenn die Grenzen überschritten werden, soll der User darauf aufmerksam gemacht werden. Ich wusste nicht, wie ich das mit der Datenüberprüfung machen soll und habe mich an ein Makro versucht, was aber leider nicht funktioniert. Hierzu folgender Code:
If Target.Address(0, 0) = "E7" Then
    If Target.Value = "t BRW" Then
        If Range("E8").Value  6 And Range("E8").Value > 40 Then
            MsgBox "Not in range"
        End If
    ElseIf Target.Value = "t umg" Then
        If Range("E8").Value  15 And Range("E8").Value > 40 Then
            MsgBox "Not in Range"
        End If
    End If
End If
    
End Sub

Mfg Elias

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwei Bedingungen für eine Zelle
21.02.2023 08:57:54
Pierre
Hallo Elias,
versuch es mal mit "OR" statt "AND".
Gruß Pierre
AW: Zwei Bedingungen für eine Zelle
21.02.2023 09:01:47
Volkanovski
Hallo Pierre,
leider funktioniert das auch nicht. Wenn ich was in E8 eingebe, passiert nichts. Liegt das dann am falschen Target?
Mfg Elias
AW: Zwei Bedingungen für eine Zelle
21.02.2023 09:13:48
Pierre
Hallo Elias,
geht schon, die MsgBox erscheint, wenn du wieder auf E7 gehst. Ist aber sicherlich nicht gewünscht.
Gruß Pierre
AW: Zwei Bedingungen für eine Zelle
21.02.2023 09:17:39
Elias
Hallo Pierre,
du hast erfasst, das war leider nicht das gewünschte Ergebnis. Hast du vielleicht einen Lösungsansatz? Ich bin in VBA leider ziemlicher Anfänger. Basiskenntnisse sind fast schon übertrieben ^^'.
Mfg Elias
AW: Zwei Bedingungen für eine Zelle
21.02.2023 09:17:40
Pierre
einfache Abhilfe, obwohl nicht ganz elegant:
If Target.Address... und das letzte End If löschen, statt If Target.Value schreibst du 2x If Range("E7").Value
Gruß Pierre
Anzeige
AW: Zwei Bedingungen für eine Zelle
21.02.2023 09:38:42
Elias
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("E7").Value = "t BRW" Then
        If Range("E8").Value  6 Or Range("E8").Value > 40 Then
            MsgBox "Not in range"
        End If
If Range("E7").Value = "t umg" Then
        If Range("E8").Value  15 Or Range("E8").Value > 40 Then
            MsgBox "Not in Range"
        End If
End If
End If
    
End Sub
So? Bestimmt falsch, da es immer noch nicht funktioniert :'D
Mfg Elias
Sauberes Einrücken!!
21.02.2023 09:50:51
Yal
Ich sage immer "auf eine sauberes Einrücken achten".
Hier dein Code mit einem klaren Verschachtelungeinrücken:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E7").Value = "t BRW" Then
        If Range("E8").Value  6 Or Range("E8").Value > 40 Then
            MsgBox "Not in range"
        End If
        If Range("E7").Value = "t umg" Then
            If Range("E8").Value  15 Or Range("E8").Value > 40 Then
                MsgBox "Not in Range"
            End If
        End If
    End If
End Sub
Merkst Du was?
VG
Yal
Anzeige
AW: Sauberes Einrücken!!
21.02.2023 09:57:23
Elias
Hallo Yal,
perfekt danke dir, funktioniert. Werde ich in Zukunft darauf achten.
Mfg Elias
AW: Sauberes Einrücken!!
21.02.2023 10:02:56
Yal
Du hast irgendwo aus einem "ElseIf" einen "If" gemacht.
Der Code mit ElseIf würde so aussehen:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("E7").Value = "t BRW" Then
        If Range("E8").Value  6 Or Range("E8").Value > 40 Then
            MsgBox "Not in range"
        End If
    ElseIf Range("E7").Value = "t umg" Then
        If Range("E8").Value  15 Or Range("E8").Value > 40 Then
            MsgBox "Not in Range"
        End If
    End If
End Sub
VG
Yal
Anzeige
Lösung
21.02.2023 09:56:45
Yal
Es ist ein Fall, wo die Verwendung von Variable eine bessere Lesbarkeit bringt:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim E7
Dim E8
    E7 = Range("E7").Value
    E8 = Range("E8").Value
    
    If E7 = "t BRW" And (E8  6 Or E8 > 40) Then MsgBox "Not in range"
    If E7 = "t umg" And (E8  15 Or E8 > 40) Then MsgBox "Not in Range"
End Sub
VG
Yal
AW: Zwei Bedingungen für eine Zelle
21.02.2023 09:03:35
Elias
Hallo,
wie kann man denn verhindern, dass sich der Name immer ändert haha.
Mfg Elias
AW: Zwei Bedingungen für eine Zelle
21.02.2023 10:30:30
GerdL
Moin Elias!
Die Frage ist doch: Was willst du insgesamt mit dem Code genau erreichen, haha ?
Gruß Gerd

Anzeige
AW: Zwei Bedingungen für eine Zelle
21.02.2023 11:25:16
Elias
Moin Gerd,
es gibt halt einmal die Umgebungstemperatur und einmal die Brauchwassertemperatur. Je nachdem ob man t BRW oder t umg auswählt, ändern sich die Grenzen in der sich der User bewegen darf. Das konnte ich leider nicht mit der Datenüberprüfung lösen, da diese nur eine Bedingungen zulässt.
Mfg Elias
AW: Zwei Bedingungen für eine Zelle
21.02.2023 11:30:05
Rudi
Hallo,
noch ne Version:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim iMin As Integer
  
  Select Case Target.Address(0, 0)
    Case "E7", "E8"
      iMin = IIf(Range("E7") = "t BRW", 6, 15)
      Select Case Range("E8")
        Case iMin To 40  'OK
        Case Else: MsgBox "Not in Range"
      End Select
  End Select
    
End Sub
Gruß
Rudi
Anzeige
AW: Zwei Bedingungen für eine Zelle
21.02.2023 14:26:33
Elias
Hallo Rudi,
danke dir, ist immer gut verschiedene Möglichkeiten zu kennen. Was genau macht IIf hier? Die Syntax-Erklärung von Microsoft verstehe ich nicht so ganz.
Mfg Elias
AW: Zwei Bedingungen für eine Zelle
21.02.2023 15:26:14
Rudi
Hallo,
man könnte das auch so schreiben:
      If Range("E7") = "t BRW" Then
        iMin = 6
      Else
        iMin = 15
      End If
IIf entspricht letztlich der WENN()-Funktion.
Gruß
Rudi

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige