Vba 应用程序定义或对象定义错误(运行时错误1004)
当我试图清除单元格内容并重置其各自的颜色时,出现运行时错误1004。我先解除工作表的保护,然后尝试清除单元格内容并重置单元格颜色,但excel引发异常。任何建议都将不胜感激Vba 应用程序定义或对象定义错误(运行时错误1004),vba,excel,Vba,Excel,当我试图清除单元格内容并重置其各自的颜色时,出现运行时错误1004。我先解除工作表的保护,然后尝试清除单元格内容并重置单元格颜色,但excel引发异常。任何建议都将不胜感激 Sub ClearField() Dim ws As Worksheet Dim pw As String pw = "xxxxxxxxxxxx" Set ws = ActiveSheet With ws 'unprotect sheet
Sub ClearField()
Dim ws As Worksheet
Dim pw As String
pw = "xxxxxxxxxxxx"
Set ws = ActiveSheet
With ws
'unprotect sheet
.Unprotect pw
Range("O3:R3").Select
Selection.ClearContents
Range("O3:R3").Interior.Color = RGB(255, 255, 255)
Range("X3:AC3").Interior.Color = RGB(255, 255, 255)
Range("X3:AC3").Select
Selection.ClearContents
Range("AE3:AJ3").Interior.Color = RGB(255, 255, 255)
Range("AE3:AJ3").Select
Selection.ClearContents
Range("AL3").Interior.Color = RGB(255, 255, 255)
Range("AL3").Select
Selection.ClearContents
Range("A7:AI36").Select
Range("A7:AI36").Interior.Color = RGB(255, 255, 255)
Range("AI7").Activate
Selection.ClearContents
Range("J39:V40").Interior.Color = RGB(255, 255, 255)
Range("J39:V40").Select
Selection.ClearContents
Range("AD44:AL45").Interior.Color = RGB(255, 255, 255)
Range("AD44:AL45").Select
Selection.ClearContents
Range("AX3:AY3").Interior.Color = RGB(255, 255, 255)
Range("AX3:AY3").Select
Selection.ClearContents
Range("AU7:AU36").Interior.Color = RGB(255, 255, 255)
Range("AU7:AU36").Select
Selection.ClearContents
Range("AZ7:BC36").Interior.Color = RGB(255, 255, 255)
Range("AZ7:BC36").Select
Selection.ClearContents
Range("BF7:BP36").Interior.Color = RGB(255, 255, 255)
Range("BF7:BP36").Select
Selection.ClearContents
Range("E6").Select
Range("AN46:AW51").Interior.Color = RGB(255, 255, 255)
Range("AN46:AW51").Select
Selection.ClearContents
'protect worksheet
.Protect pw
End With
End Sub
您需要使用与取消保护和保护相同的方式来限定所有
范围(…)
引用,方法是使用
。您还可以删除所有的select
语句,然后按照我在下面向您展示的方式操作您的范围
Sub ClearField()
Dim ws As Worksheet
Dim pw As String
pw = "xxxxxxxxxxxx"
Set ws = ActiveSheet
With ws
'unprotect sheet
.Unprotect pw
With .Range("O3:R3")
.ClearContents
.Interior.Color = RGB(255, 255, 255)
End With
' ... rewrite the rest in the way I have done above
'protect worksheet
.Protect pw
End With
End Sub
保持一致也是一种方法
Dim ws As Worksheet, rng As Range
Dim pw As String
pw = "xxxxxxxxxxxx"
Set ws = ActiveSheet
With ws
.Unprotect pw 'unprotect sheet
Set rng = .Range("O3:R3,X3:AC3,AE3:AJ3,AL3,A7:AI36,J39:V40,AD44:AL45,AX3:AY3,AU7:AU36,AZ7:BC36,BF7:BP36,AN46:AW51")
rng.Interior.Color = RGB(255, 255, 255)
rng.ClearContents
.Protect pw
End With
有人回答了吗?