我是脚本新手,我正在尝试改进现有的宏。 我录制了一个宏来删除dupliate并将其添加到Main函数中,该函数调用其他函数,但是当我添加我记录的宏时,我收到此错误: 运行时错误'1004': 应用程序定义或对象定义的错误。
代码看起来像
Sub Main()
Call DuplicateRemove
Call DeleteBlankRows
Call TrimText
End
Sub DeleteBlankRows()
.
.
End Sub
Sub TrimText()
.
.
End Sub
Sub DuplicateRemove()
Columns("A:A").Select
ActiveSheet.Range("$A$1:$A$95678").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
谢谢, 基兰
答案 0 :(得分:3)
您的代码没有任何问题。如果Active
工作表受密码保护,则只会出现此错误。
另外,避免使用.Select
和ActiveSheet
是一个更好的选择。您的代码可以写成
Sub DuplicateRemove()
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
With ws
If .ProtectContents = True Then
MsgBox "Worksheet is protected"
.Unprotect "MYPASSWORD"
.Range("$A$1:$A$95678").RemoveDuplicates Columns:=1, Header:=xlNo
.Protect "MYPASSWORD"
Else
.Range("$A$1:$A$95678").RemoveDuplicates Columns:=1, Header:=xlNo
End If
End With
End Sub
<强>后续强>
Sub DuplicateTest()
ActiveSheet.Columns(1).RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
答案 1 :(得分:1)
如果Microsoft Visual Basic应用程序在Excel 2003工作簿中复制并粘贴整行,则会发生此错误,或者如果Microsoft在此情况下复制并粘贴Excel 2003工作簿中的2,516行或更多行的范围,则可能会发生此错误runtime error 1004发生。 要获得此错误的解决方案,请保存工作簿并操作可以保存工作簿的宏代码。
答案 2 :(得分:-1)
ActiveSheet.Range(“A1:C100”)。RemoveDuplicates Columns:= Array(1,2),Header:= xlYes
以下是我发现的有关您情况的信息,我希望它有所帮助。