首页 > 解决方案 > 使用循环将公式应用于范围,错误 1004

问题描述

我正在学习 VBA,现在我正在尝试通过循环将公式应用于动态范围的单元格。但我明白了error 1004。我想问题在于范围定义,但我不确定。有人可以向我解释问题出在哪里吗?

    Dim i As Integer, j As Integer, k As Integer
    Dim lastrow As Long

    Set ws = Sheets(ActiveSheet.Name)

    lastrow = ws.Cells(ws.Rows.Count, "a").End(xlUp).Row

    i = 37
    j = 8
    k = 0

    Do While i < 73
        With ws
            .Range(.Cells(i, j), .Cells(i, lastrow)).Formula = "=vlookup($a8,Ï!a:aj,k+1,false)"
            i = i + 1
            k=k+1
        End With
    Loop

问题似乎出在这个地方。

with ws 
.range(.cells(i,j),.cells(i,lastrow))

为什么不正确?

标签: excelvba

解决方案


"=vlookup($a8,Ï!a:aj,k+1,false)"

k是一个变量。当你把它放在一个字符串中时,它就变成了一个字符串。

尝试这个

"=vlookup($a8,Ï!a:aj," & k + 1 & ",false)"

此外,您可能想让 LookUp Table 保持不变?

"=vlookup($a8,Ï!$a:$aj," & k + 1 & ",false)"

顺便说一句,k是一个变量,你没有增加它。那么为什么要使用它呢?

我的建议是首先手动将公式放在该范围内,然后弄清楚你想如何编码。


推荐阅读