range.formula中的应用程序或对象定义的错误

时间:2017-10-30 10:29:31

标签: excel vba excel-vba

我正在尝试将公式设置为某些单元格。在for循环中设置公式的代码如下:

For i = 0 To MotorAmount
            Set myCell = Range(Target.Address).Offset(i, 1)
            myCell.Formula = "=IFERROR(VLOOKUP(Range(Target.Address);Database!$B$31:$G$131;2;False);0)"
Next i

但是我在以myCell.Formula开头的行上得到了一个应用程序或对象定义的错误。我希望有人可以告诉我为什么会发生错误以及如何解决它。

PS:我在公式中使用分号,因为我的Excel就是这样的。数据库'是我使用的另一张纸的名称。

PS2:子被放置在VBAProject中的Microsoft Excel对象下的Sheet1中。

完整的代码是:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRange As Range
Dim myCell As Range
Dim i As Integer
Dim MotorAmount As Integer

Set myRange = Range("A68:A168")
If Not Application.Intersect(myRange, Range(Target.Address)) Is Nothing Then
    If Not Range(Target.Address) = "" Then
        MotorAmount = InputBox("How many motors are used in this transport?", "Amount of motors")
        For i = 0 To MotorAmount
            Set myCell = Range(Target.Address).Offset(i, 1)
            myCell.Formula = "=IFERROR(VLOOKUP(Range(Target.Address);Database!$B$31:$G$131;2;False);0)"
        Next i
    End If
End If
End Sub

2 个答案:

答案 0 :(得分:0)

您不能将代码放在公式中,并且您应该在公式中使用逗号而不是分号,因为VBA是以美国为中心的。我建议使用R1C1引用:

myCell.FormulaR1C1 = "=IFERROR(VLOOKUP(R" & Target.Row & "C1,Database!R31C2:R131C7,2,False),0)"

答案 1 :(得分:0)

您的公式实施应该是:

myCell.Formula = "=IFERROR(VLOOKUP(" & Target.Address & ",Database!$B$31:$G$131,2,False),0)"

注意:在VBA中,在编写公式时使用逗号,在本机中它将自动显示您正在使用的正确参数分隔符。