Range.Validation方法发生1004错误

我使用VBA将validation添加到另一个validation的其他单元格。 所有这个validation中的公式都有命名的范围。 我试过的:

在这个validation依赖的单元格中放置值;

– 放置值后重新计算书籍

-idebugging所有代码,并且没有错误(仅在此代码中发生错误)

这是一个代码。

Public Sub MakeValidation(ByVal ValidString As String, ByVal ValidAddress As String, ByVal ValidSheet As String, ByRef WB As Workbook) Dim n As Long NewStart: Err.Clear n = n + 1 If n = 10 Then Exit Sub On Error GoTo NewStart WB.Worksheets(ValidSheet).Range(ValidAddress).Validation.Delete Debug.Print "'" & Err.Number; "'" & " " & Err.Description On Error GoTo NewStart If CheckValidation(ValidAddress, ValidSheet, WB) = True Then WB.Worksheets(ValidSheet).Range(ValidAddress).Validation.Delete End If WB.Worksheets(ValidSheet).Range(ValidAddress).Validation.Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:=ValidString End Sub 

你有什么想法,为什么“错误转到NewStart”不起作用? 为什么当我通过按“F5”运行代码它不起作用,但是当我debugging代码的作品?

非常感谢您的回答。 我的英文不是很好。 对不起,错误。

这个Resume应该足以避免你的问题(正如评论中所解释的):

 Public Sub MakeValidation(ByVal ValidString As String, ByVal ValidAddress As String, ByVal ValidSheet As String, ByRef WB As Workbook) Dim n As Long NewStart: Err.Clear n = n + 1 If n = 10 Then Exit Sub Resume KeepRunning KeepRunning: On Error GoTo NewStart WB.Worksheets(ValidSheet).Range(ValidAddress).Validation.Delete Debug.Print "'" & Err.Number; "'" & " " & Err.Description If CheckValidation(ValidAddress, ValidSheet, WB) = True Then WB.Worksheets(ValidSheet).Range(ValidAddress).Validation.Delete End If WB.Worksheets(ValidSheet).Range(ValidAddress).Validation.Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:=ValidString End Sub 

我也摆脱了第二个On Error GoTo NewStart这是无用的,因为您没有“引发”前面的语句与On Error GoTo 0