【发布时间】:2016-03-19 17:06:06
【问题描述】:
通常 Excel 中的记录选项很棒,但这次没有帮助。
我可以使用此代码通过 VBA 创建数据验证列表:
Sub Macro 8()
With Range("C8").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Land"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
现在可以了。但在下面的单元格中,我需要公式为=INDIRECT($C$8)。所以使用 Recorder 我得到了几乎相同的代码:
Sub Macro1()
With Range("C9").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect($C$8)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
但使用该代码时,我总是会收到指向该行的“应用程序定义或对象定义错误”
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect($C$8)"
谁能告诉我我的错误在哪里?
【问题讨论】:
标签: excel vba validation macros excel-indirect