Vba Select Case语句不在整型变量值之后

Vba Select Case语句不在整型变量值之后,vba,excel,excel-2010,Vba,Excel,Excel 2010,这是我的代码摘录: 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)

这是我的代码摘录:

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
Dim x作为整数
x=0
选择案例x
案例x=0'第4行
find_元素=fin_数组(x)
如果修剪(查找元素)”,则
对于k=3,持续时间为
带活页(k)。范围(“1:200”)
sh_Name=工作表(k)。名称
将指针设置为元素=.Find(查找元素_
.Cells(.Cells.Count)、xlValues、xlWhole、xlByRows、_
xlNext,False)
指针\u Int\u Row=CInt(指向\u元素.Row的指针)
'pointer\u Int\u Col=CInt(指向元素.Column的指针)
工作表(k).单元格(指针输入行,锁定列).复制
工作表(“提取”).Range(“B8”).Offset(,q).Paste特殊XLPaste值
工作表(“提取”).Range(“B7”).Offset(,q).Value=sh_Name
q=q+1
以
下一个k
如果结束
q=1
案例x=1
find_元素=fin_数组(x)
如果修剪(查找元素)”,则
对于k=3,持续时间为
带活页(k)。范围(“1:200”)
sh_Name=工作表(k)。名称
将指针设置为元素=.Find(查找元素_
.Cells(.Cells.Count)、xlValues、xlWhole、xlByRows、_
xlNext,False)
指针\u Int\u Row=CInt(指向\u元素.Row的指针)
指针Int\u Col=CInt(指向元素Column的指针)
工作表(k).单元格(指针整数行,指针整数列).偏移量(,2)_
复制
工作表(“提取”).Range(“B8”).Offset(,q).Paste特殊XLPaste值
工作表(“提取”).Range(“B7”).Offset(,q).Value=sh_Name
q=q+1
以
下一个k
如果结束
q=1
我的问题是,我在代码中显式设置了
x=0
,但是
VBA
当它转到第4行时,它会跳转并执行Case x=1

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

根据它的意思是:

Dim x As Integer
x = 0
Select Case x
    Case 0
        'do some stuff
    Case 1
        'do other stuff
End Select
扩展PeeKay所说的内容:

执行
x=0
测试
x
是否等于
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
根据这本书,它的意思是:

Dim x As Integer
x = 0
Select Case x
    Case 0
        'do some stuff
    Case 1
        'do other stuff
End Select
扩展PeeKay所说的内容:

执行
x=0
测试
x
是否等于
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
为了解释安迪的评论:
当您显式设置X=0时,Case X=0
将始终返回true

只需使用:

Select Case X
    Case 0
    ' do stuff
    Case 1
    ' do other stuff
    Case Else
    '...
End Select
为了解释安迪的评论:
当您显式设置X=0时,Case X=0
将始终返回true

只需使用:

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

你只需要
Case 0
而不是
Case x=0
。Ohhhh让我试试secX=0和x=1是表达式,vba将取表达式的值,该值为真(或1),而不是x的值。非常感谢!!!如果你有时间给出答案,我会在计时器允许的情况下将其标记为正确,我会编辑此问题,以便其他用户友好地回答。再次感谢万分!!!你只需要
Case 0
而不是
Case x=0
。Ohhhh让我试试secX=0和x=1是表达式,vba将取表达式的值,该值为真(或1),而不是x的值。非常感谢!!!如果你有时间给出答案,我会在计时器允许的情况下将其标记为正确,我会编辑此问题,以便其他用户友好地回答。再次感谢万分!!!如果计时器允许,我将在8分钟内将其标记为正确。这是正确的答案!不,请留下你的答案。你的答案更好,因为你花了时间去寻找参考资料。我不会删除答案,因为你提供的参考资料很有价值。为了完整性,我尝试使用Case
myVar,如果计时器允许,我会在8分钟内将其标记为正确。这是正确的答案!不,请留下你的答案。你的答案更好,因为你花时间去寻找参考资料。我不会删除答案,因为你提供的参考资料很有价值。为了完整性,我尝试使用Case
myVar