【发布时间】:2019-05-22 10:09:34
【问题描述】:
我有一个文件,我想检查单元格“$A$2”是否为空,如果是,我想在此单元格中添加公式(=VLOOKUP($I$2;'Raw Data'!$A$1:$AH$5000;4;FALSE)。我运行下面的代码会生成一个
运行时错误“1004”(应用程序定义或对象定义错误)。
我已经使用了目标公式,如果我采用像 =B1+B2 这样的简单公式,它可以工作,而且我不会收到错误消息。所以这似乎是导致错误的 Vlookup 公式。
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Cells.Address = "$A$2" And Target = vbNullString) Then
Target.Formula = "=VLOOKUP($I$2;'Raw Data'!$A$1:$AH$5000;4;FALSE)"
End If
End Sub
我希望单元格 "$A$2" 显示公式 =VLOOKUP($I$2;'Raw Data'!$A$1:$AH$5000;4;FALSE) 的结果,除非该单元格被手动覆盖。
感谢您的帮助@Pᴇʜ @eirikduade @Gareth!
现在我正在尝试对 A 列中的所有单元格执行相同的操作,其中同一行的 I 列中有一个值,并且我在使用 .Range 函数时遇到了困难。您能否给我任何建议如何修复以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastRowF As Integer
lastRowF = Sheet3.Cells(Sheet3.Rows.Count, "I").End(xlUp).Row
For j = 1 To lastRowF
If Intersect(Target, Me.Range(Cells(j, 2))) Is Nothing Then Exit Sub
If Me.Range(.Cells(j, 2)) = vbNullString Then
Me.Range(.Cells(j, 2)).Formula = "=VLOOKUP(""" & cells.(y, 1) & """,'Raw Data'!$A$1:$AH$5000,4,FALSE)"
Exit For
End If
Next j
End Sub
【问题讨论】: