我正在尝试将公式设置为某些单元格。在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
答案 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中,在编写公式时使用逗号,在本机中它将自动显示您正在使用的正确参数分隔符。