Cell.Value无效

时间:2017-04-14 02:57:33

标签: excel vba excel-vba

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

3 个答案:

答案 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将更正案例。如果它没有输入错字。