VBA:如果声明不起作用

问题描述:

我不知道为什么声明不起作用。没有错误发生,但同时在表单中没有结果。VBA:如果声明不起作用

Sub won() 
    Dim ws As Worksheet 
    Dim lastrow As Long 

    Set ws = ThisWorkbook.Sheets("Data imput") 
    lastrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 

    For i = 3 To lastrow 
     If ws.Cells(i, 6) = "customer" Then 
     ws.Cells(i, 16) = 1 
     End If 
    Next i 

    MsgBox "done!" 
End Sub 
+0

也许它的工作,它的计算结果为'FALSE'? – David

+0

嗨,可能是一个愚蠢的答案,但是是“客户”正确书写, –

+0

它也不显示False。 – aannie

这可能是因为您正在搜索列1内的LASTROW就做了6列如下:

lastrow = ws.Cells(ws.Rows.Count, 6).End(xlUp).Row 
+0

它现在有效!谢谢! – aannie

你忘了定义变量i。

Dim i As Integer 

为防止以后出现此错误把下面的代码行的顶部宏

Option Explicit 
+0

将'i'变量声明为'Long'可能会更好,因为'Integer'是16位,介于-32,768和32,768之间,而'Long'是32位,介于-2,147,483,648和2,147,483,648之间 – Tehscript

+0

True,Long将是因为你已经将lastrow声明为Long。 – sourceCode