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分钟内将其标记为正确。这是正确的答案!不,请留下你的答案。你的答案更好,因为你花了时间去寻找参考资料。我不会删除答案,因为你提供的参考资料很有价值。为了完整性,我尝试使用CasemyVar,如果计时器允许,我会在8分钟内将其标记为正确。这是正确的答案!不,请留下你的答案。你的答案更好,因为你花时间去寻找参考资料。我不会删除答案,因为你提供的参考资料很有价值。为了完整性,我尝试使用CasemyVar