selectCase语句不遵循整数variables值

这是我的代码摘录:

Dim x as Integer x = 0 Select Case x Case x = 0 'LINE 4 find_Element = fin_Array(x) If Trim(find_Element) <> "" Then For k = 3 To last_WS With Sheets(k).Range("1:200") sh_Name = Worksheets(k).Name Set pointer_to_Element = .Find(find_Element, _ .Cells(.Cells.Count), xlValues, xlWhole, xlByRows, _ xlNext, False) pointer_Int_Row = CInt(pointer_to_Element.Row) 'pointer_Int_Col = CInt(pointer_to_Element.Column) Worksheets(k).Cells(pointer_Int_Row, lock_Col).Copy Worksheets("EXTRACTIONS").Range("B8").Offset(, q).PasteSpecial xlPasteValues Worksheets("EXTRACTIONS").Range("B7").Offset(, q).Value = sh_Name q = q + 1 End With Next k End If q = 1 Case x = 1 find_Element = fin_Array(x) If Trim(find_Element) <> "" Then For k = 3 To last_WS With Sheets(k).Range("1:200") sh_Name = Worksheets(k).Name Set pointer_to_Element = .Find(find_Element, _ .Cells(.Cells.Count), xlValues, xlWhole, xlByRows, _ xlNext, False) pointer_Int_Row = CInt(pointer_to_Element.Row) pointer_Int_Col = CInt(pointer_to_Element.Column) Worksheets(k).Cells(pointer_Int_Row, pointer_Int_Col).Offset(, 2) _ .Copy Worksheets("EXTRACTIONS").Range("B8").Offset(, q).PasteSpecial xlPasteValues Worksheets("EXTRACTIONS").Range("B7").Offset(, q).Value = sh_Name q = q + 1 End With Next k End If q = 1 

我的问题是,我明确地设置x=0在我的代码,但VBA当它到达线4它跳转并执行案例x = 1!

当我在代码中显式设置x=0时,这怎么可能?

根据http://msdn.microsoft.com/en-us/library/cy37t14y.aspx它是这样的&#xFF1A;

 Dim x As Integer x = 0 Select Case x Case 0 'do some stuff Case 1 'do other stuff End Select 

扩大PeeKay所说的话:

x = 0testingx是否等于0 ,它的计算结果为True ,相当于1 ,同样x = 1将计算为False (或0 ),因为x不等于1所以你的代码看起来像这样:

 Dim x As Integer x = 0 Select Case x Case 1 'do some stuff Case 0 'do other stuff End Select 

解释Andy的评论:当你明确地设置x = 0时, Case X= 0总是返回true。

只要使用:

 Select Case X Case 0 ' do stuff Case 1 ' do other stuff Case Else '... End Select