使用验证在 VBA 中获取应用程序定义或对象定义的错误
Getting an Application-defined or Object-defined error in VBA using Validation
我正在尝试使用活动单元格的偏移量获取某个地址。但它总是抛出错误“Object variable or With block variable not set”。任何人都可以指出我的错误并进行更正吗?提前致谢。
代码如下:
*OTHER CODES HERE*
Dim offsetter As Range
offsetter = ActiveCell.Offset(0, -2).Address(False, False) //Error on this line
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=INDIRECT(SUBSTITUTE("&offsetter&",' ','_'))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
*OTHER CODES HERE*
我已经更新了代码,我犯的错误是将变量声明为范围,而它应该是字符串。
我现在收到一个新错误“应用程序定义或对象定义的错误”
*OTHER CODES HERE*
Dim offsetter As String
offsetter = ActiveCell.Offset(0, -2).Address(False, False)
With Selection.Validation
.Delete
//Error on this line [.add]
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=INDIRECT(SUBSTITUTE("&offsetter&",' ','_'))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
*OTHER CODES HERE*
这是最终的工作代码:
Dim offsetter As String
offsetter = ActiveCell.Offset(0, -2).Address(False, False)
With Selection.Validation
.Delete
'Application-defined or Object-defined error
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=INDIRECT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(""" _
& offsetter & ""","" "",""_""),""-"",""_""),""/"",""_""),""("",""""),"")"",""""))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
谢谢大家!
一个验证对象有以下三个方法:
Add
Delete
Modify
虽然 Add
和 Modify
致力于验证本身,但 Delete
删除了 整个 对象。这就是为什么之后您无法添加验证或指定任何其他属性的原因。
这是我完成的最终工作代码。
Dim offsetter As String
offsetter = ActiveCell.Offset(0, -2).Address(False, False)
With Selection.Validation
.Delete
'Application-defined or Object-defined error
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=INDIRECT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(""" _
& offsetter & ""","" "",""_""),""-"",""_""),""/"",""_""),""("",""""),"")"",""""))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
我正在尝试使用活动单元格的偏移量获取某个地址。但它总是抛出错误“Object variable or With block variable not set”。任何人都可以指出我的错误并进行更正吗?提前致谢。
代码如下:
*OTHER CODES HERE*
Dim offsetter As Range
offsetter = ActiveCell.Offset(0, -2).Address(False, False) //Error on this line
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=INDIRECT(SUBSTITUTE("&offsetter&",' ','_'))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
*OTHER CODES HERE*
我已经更新了代码,我犯的错误是将变量声明为范围,而它应该是字符串。
我现在收到一个新错误“应用程序定义或对象定义的错误”
*OTHER CODES HERE*
Dim offsetter As String
offsetter = ActiveCell.Offset(0, -2).Address(False, False)
With Selection.Validation
.Delete
//Error on this line [.add]
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=INDIRECT(SUBSTITUTE("&offsetter&",' ','_'))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
*OTHER CODES HERE*
这是最终的工作代码:
Dim offsetter As String
offsetter = ActiveCell.Offset(0, -2).Address(False, False)
With Selection.Validation
.Delete
'Application-defined or Object-defined error
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=INDIRECT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(""" _
& offsetter & ""","" "",""_""),""-"",""_""),""/"",""_""),""("",""""),"")"",""""))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
谢谢大家!
一个验证对象有以下三个方法:
Add
Delete
Modify
虽然 Add
和 Modify
致力于验证本身,但 Delete
删除了 整个 对象。这就是为什么之后您无法添加验证或指定任何其他属性的原因。
这是我完成的最终工作代码。
Dim offsetter As String
offsetter = ActiveCell.Offset(0, -2).Address(False, False)
With Selection.Validation
.Delete
'Application-defined or Object-defined error
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=INDIRECT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(""" _
& offsetter & ""","" "",""_""),""-"",""_""),""/"",""_""),""("",""""),"")"",""""))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With