Excel 带变量的循环的VBA

Excel 带变量的循环的VBA,excel,vba,Excel,Vba,我试图使用最后一行作为行计数来运行for循环,但由于某些原因,它没有运行。同样的,如果我用一个数字代替LR,它的效果非常好 Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To LR If (Cells(i, 8).Value <> "") Then Cells(i, 13).Value = (Cells(i, 12).Value - Cells(i, 11).Value)

我试图使用最后一行作为行计数来运行for循环,但由于某些原因,它没有运行。同样的,如果我用一个数字代替LR,它的效果非常好

Dim LR As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To LR
    If (Cells(i, 8).Value <> "") Then
        Cells(i, 13).Value = (Cells(i, 12).Value - Cells(i, 11).Value)
    End If
Next i
Dim LR尽可能长
LR=单元格(Rows.Count,1).End(xlUp).Row
对于i=2至LR
如果(单元格(i,8).Value“”),则
单元格(i,13).值=(单元格(i,12).值-单元格(i,11).值)
如果结束
接下来我

代码工作正常,但不是您希望的工作方式。这很可能是因为您使用了隐式的工作表引用

LR = Cells(Rows.Count, 1).End(xlUp).Row
上面的行将从当前活动工作表中获取最后使用的行,因此上面的行也可以读取为
LR=ActiveSheet.Cells(Rows.Count,1).End(xlUp).row

类似于
单元格(i,8).Value
单元格(i,13).Value=(单元格(i,12).Value-单元格(i,11).Value)
的情况也会发生,它们的读数类似于
ActiveSheet.Cells(i,8).Value

显式引用将包括要引用的图纸。例如:
LR=Worksheets(“Sheet1”).Cells(Rows.Count,1).End(xlUp).Row

为了防止多行较长的代码引用同一工作表,我建议使用
With
语句明确引用:

Dim LR As Long i as long

With Sheet1 'Change according to your sheets CodeName
    LR = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 2 To LR
        If .Cells(i, 8).Value <> "" Then
            .Cells(i, 13).Value = .Cells(i, 12).Value - .Cells(i, 11).Value
        End If
    Next i
End with
Dim LR As Long i As Long
使用Sheet1'根据您的工作表代号进行更改
LR=.Cells(.Rows.Count,1).End(xlUp).Row
对于i=2至LR
如果.Cells(i,8).Value为“”,则
.Cells(i,13)。Value=.Cells(i,12)。Value-.Cells(i,11)。Value
如果结束
接下来我
以

如果这仍然不能使循环运行,那么您必须检查第一列以查看第2行以外是否有实际数据。

这里的问题可能是您使用了隐式工作表引用>
LR=Cells(Rows.Count,1)。End(xlUp)。row
从隐式
ActiveSheet
中获取最后一行。进一步讲,
单元格
也会发生同样的情况,因此您可能希望研究使用
with
语句引用工作表
代码名
,并在range对象前面放置一个点,使其显式