通常Excel中的记录选项很棒,但这次没有帮助。
我可以使用此代码通过VBA创建数据验证列表:
topicIds
现在这个有效。但是在下面的Cell中,我需要公式为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
。所以使用Recorder我得到了几乎相同的代码:
=INDIRECT($C$8)
但是使用该代码我总是得到一个指向行
的“应用程序定义或对象定义的错误”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
谁能告诉我我的错误在哪里?
答案 0 :(得分:0)
您的代码大部分是正确的。您不需要很多代码来执行Indirect()部分。以下是整个事情:
Sub Macro8()
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
Range("C9").Formula = "=INDIRECT(""$C$8"")"
End Sub
答案 1 :(得分:0)
好的,我用它来工作ONCE,现在我再次得到同样的错误......:
With Range("C9").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Indirect(" & Range("C8").Address & ")"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
我不太明白为什么...... 有人可以解释一下
" & Range("C8").Address & "
装置?
答案 2 :(得分:0)
让它发挥作用!
我将现有代码放在一个单独的宏中并使其相对于ActiveCell
现在只要在上面的单元格中选择了某些内容就会运行
谢谢你!