Excel宏"运行时错误' 1004"

时间:2012-07-31 18:17:02

标签: excel-vba vba excel

我是脚本新手,我正在尝试改进现有的宏。 我录制了一个宏来删除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

谢谢, 基兰

3 个答案:

答案 0 :(得分:3)

您的代码没有任何问题。如果Active工作表受密码保护,则只会出现此错误。

另外,避免使用.SelectActiveSheet是一个更好的选择。您的代码可以写成

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

以下是我发现的有关您情况的信息,我希望它有所帮助。