基于单元格的值的Excel VBA切换语句

所以我有一个单元格(A2)在它的整数值(5)。 我想要一个switch语句,看单元格,然后如果该单元格的值大于50000做某事,如果该值小于50000做某事。

这是我的代码不起作用,它说“溢出”的行代码threshold = 50000

  Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Dim state As Integer Dim threshold As Integer threshold = 50000 state = Sheet1.Range("A2").Value Select Case state Case state < threshold 'Do something Debug.Print (state) Case Is >= threshold 'Do something Debug.Print (state) End Select End Sub 

我怎样才能解决这个问题?

问题在这里:
Sheet1.Range.Value("$A$2")

使用Select Case

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim state As Integer state = CInt(Sheet1.Range("$A$2")) Select Case state Case Is > Target.Value Debug.Print "less than " & state Case Is < Target.Value Debug.Print "greater than " & state Case Else Debug.Print "Equals" End Select End Sub 

使用if语句

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim state As Integer state = CInt(Sheet1.Range("$A$2")) If Target.Value < state Then Debug.Print "less than " & state ElseIf Target.Value > state Then Debug.Print "greater than " & state Else Debug.Print "Equals" End If End Sub 

POST_EDIT:
50000对于Integer数据types来说太大了,所以将其标注Long数据types以避免溢出

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim threshold As Long threshold = 50000 Select Case Target.Value Case Is >= threshold Debug.Print "greater or equal " & threshold Case Is < Target.Value Debug.Print "smaller than " & threshold Case Else Debug.Print "Can't calculate! Error" End Select End Sub 

你的Range语句是错误的

 Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Dim state As Integer state = Sheet1.Range("A2").Value Select Case state Case Is < 5 'Do something Debug.Print (state) Case Is > 5 'Do something End Select End Sub 

你没有提到如果state = 5该怎么办?