MsgBox无法显示TestStr1的值,但最后一个代码MsgBox Sheets("Sheet2").Cells(2, 11).Value
可以显示。为什么呢?
返回的值应为1.
TestStr1 = Sheets("Sheet1").Cells(2, 11).Value
MsgBox (TesStr1)
MsgBox Sheets("Sheet2").Cells(2, 11).Value
完整的代码
Sub FilterTo1Criteria()
With Sheets(3)
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
Dim i As Integer
Dim j As Integer
Dim TestComp As Integer
Dim TestStr2 As String
Dim TestStr1 As Double
TestStr2 = "Suitable"
TestStr1 = Sheets("Sheet1").Cells(2, 11).Value
MsgBox (TesStr1)
MsgBox Sheets("Sheet2").Cells(2, 11).Value
For i = 1 To lastRow
'TestComp = StrComp(TestStr1, TestStr2, CompareMethod.Text)
If TestComp = 0 Then
For j = 1 To 16
Sheets(5).Cells(i, j) = Sheets(3).Cells(i, j)
Next j
End If
Next i
End Sub
答案 0 :(得分:0)
这两行代码引用了两个不同的工作表。
表<强> 1 强>:
TestStr1 = Sheets("Sheet1").Cells(2, 11).Value
MsgBox (TesStr1)
表<强> 2 强>
MsgBox Sheets("Sheet2").Cells(2, 11).Value
我的猜测是第二个可以工作,但第一个没有,因为在Sheet 1 中可能没有为.Cells(2,11)赋值,但可能有一个值已分配到工作表 2 中的相同单元格。
答案 1 :(得分:0)
你的msgbox它永远不会向你显示TestStr1,因为你将他定义为double,将他改为字符串并且它将起作用
答案 2 :(得分:0)
您已声明TestStr1
,但您的MsgBox想要显示TesStr1
。纠正拼写,它会起作用。
在每个代码表的顶部添加Option Explicit
。我在我的工作簿中有这个,它在第一次尝试时向我显示了错误。想想你可以节省多少时间。请记住:Option Explicit
。这意味着必须声明工作表中使用的每个变量,并且它旨在捕获类似这样的类型。
要做的另一件事是使用大写和小写声明您的变量名称,但仅使用小写字符键入它们。完成键入每行代码后,VBA将更正案例。如果它没有输入错字。