wie kann ich in einer Select Case Abfrage, abfragen ob es sich bei dem Wert um eine Zahl handelt.
Mein Versuch:
Select Case Target.Value
Case IsNumeric(Target.Value) = True
End Select
Funktioniert leider nicht
MFG
Steffen Schmerler
Private Sub Worksheet_Change(ByVal Target As Range)
' Wenn es wirklich, wie hier in meinem Beispiel auf Change reagieren soll dann
' die Events abschalten sonst ist es eine Endlosschleife.
Application.EnableEvents = False
With Target
If IsNumeric(.Value) = False Then
Select Case UCase(Target.Value)
Case "U"
.Value = UCase(Target.Value)
.Interior.ColorIndex = 5
.Font.ColorIndex = 2
.HorizontalAlignment = xlCenter
Case "S"
.Value = UCase(Target.Value)
.Interior.ColorIndex = 4
.Font.ColorIndex = 1
.HorizontalAlignment = xlCenter
Case "K"
.Value = UCase(Target.Value)
.Interior.ColorIndex = 3
.Font.ColorIndex = 2
.HorizontalAlignment = xlCenter
Case "V"
.Value = UCase(Target.Value)
.Interior.ColorIndex = 6
.Font.ColorIndex = 1
.HorizontalAlignment = xlCenter
Case Else
.Font.ColorIndex = 1
.HorizontalAlignment = xlRight
If .Row Mod 2 <> 0 Then
.Interior.ColorIndex = xlNone
Else
.Interior.ColorIndex = 15
End If
End Select
Else
MsgBox ("Der eingebene Wert ist ungültig.")
.ClearContents
End If
End With
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
' Wenn es wirklich, wie hier in meinem Beispiel auf Change reagieren soll dann
' die Events abschalten sonst ist es eine Endlosschleife.
Application.EnableEvents = False
With Target
If IsNumeric(.Value) = False Then
Select Case UCase(.Value)
Case "U"
.Value = UCase(.Value)
.Interior.ColorIndex = 5
.Font.ColorIndex = 2
.HorizontalAlignment = xlCenter
Case "S"
.Value = UCase(.Value)
.Interior.ColorIndex = 4
.Font.ColorIndex = 1
.HorizontalAlignment = xlCenter
Case "K"
.Value = UCase(.Value)
.Interior.ColorIndex = 3
.Font.ColorIndex = 2
.HorizontalAlignment = xlCenter
Case "V"
.Value = UCase(.Value)
.Interior.ColorIndex = 6
.Font.ColorIndex = 1
.HorizontalAlignment = xlCenter
Case Else
.Font.ColorIndex = 1
.HorizontalAlignment = xlRight
If .Row Mod 2 <> 0 Then
.Interior.ColorIndex = xlNone
Else
.Interior.ColorIndex = 15
End If
End Select
Else
MsgBox ("Der eingebene Wert ist ungültig.")
.ClearContents
End If
End With
Application.EnableEvents = True
End Sub
Um in VBA eine Select Case-Anweisung zu nutzen, die überprüft, ob ein Wert eine Zahl ist, kannst du folgende Schritte befolgen:
Private Sub-Prozedur, die auf Änderungen in einem bestimmten Bereich reagiert.Hier ist ein einfaches Beispiel für die Implementierung einer Select Case-Anweisung, die die IsNumeric-Funktion verwendet:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
With Target
If IsNumeric(.Value) Then
Select Case .Value
Case 1
MsgBox "Die Zahl ist 1"
Case 2
MsgBox "Die Zahl ist 2"
Case Else
MsgBox "Eine andere Zahl"
End Select
Else
MsgBox "Keine gültige Zahl"
.ClearContents
End If
End With
Application.EnableEvents = True
End Sub
Fehler 1: Select Case Target.Value wird verwendet, ohne IsNumeric zu überprüfen.
Lösung: Stelle sicher, dass du zuerst prüfst, ob der Wert numerisch ist, bevor du die Select Case-Anweisung ausführst, wie im obigen Beispiel gezeigt.
Fehler 2: Verwendung von Case IsNumeric(Target.Value) = True, was nicht korrekt ist.
Lösung: Verwende einfach If IsNumeric(Target.Value) anstelle von Select Case für die numerische Überprüfung.
Eine alternative Methode zur Verwendung von Select Case für numerische Werte ist die Verwendung von If...ElseIf-Anweisungen:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
With Target
If IsNumeric(.Value) Then
If .Value = 1 Then
MsgBox "Die Zahl ist 1"
ElseIf .Value = 2 Then
MsgBox "Die Zahl ist 2"
Else
MsgBox "Eine andere Zahl"
End If
Else
MsgBox "Keine gültige Zahl"
.ClearContents
End If
End With
Application.EnableEvents = True
End Sub
Diese Methode ist besonders nützlich, wenn du komplexere Bedingungen hast.
Hier ist ein praktisches Beispiel, das die Verwendung von IsNumeric in einer Select Case-Anweisung zeigt:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
With Target
If IsNumeric(.Value) Then
Select Case .Value
Case 10
MsgBox "Zahl ist zehn"
Case 20
MsgBox "Zahl ist zwanzig"
Case Else
MsgBox "Eine andere Zahl"
End Select
Else
MsgBox "Ungültiger Wert"
.ClearContents
End If
End With
Application.EnableEvents = True
End Sub
In diesem Beispiel wird der Wert überprüft, und je nach Eingabe erhält der Benutzer eine entsprechende Rückmeldung.
Application.EnableEvents auf False, bevor du Änderungen vornimmst, und setze es danach wieder auf True.UCase- oder LCase-Funktionen, um die Groß- und Kleinschreibung zu ignorieren, wenn du Text überprüfst.Select Case in Excel VBA kannst du auch mehrere Bedingungen in einem Case kombinieren, z.B. Case 1, 2, 3 für mehrere mögliche Werte.1. Frage: Wie kann ich mehrere Werte in einem Select Case abfragen?
Antwort: Du kannst mehrere Werte in einem Case angeben, indem du sie durch Kommas trennst, z.B. Case "U", "u".
2. Frage: Was ist der Unterschied zwischen Select Case und If...ElseIf?
Antwort: Select Case ist oft einfacher zu lesen, wenn du viele Bedingungen hast. If...ElseIf ist flexibler und eignet sich besser für komplexere Logik.