运行时错误 '1004':对象 '_Global' 的方法 'Range' 失败。

12
我在Excel上遇到一个问题,有一个表格可以生成参考号。但是当我试图生成参考号时,它显示了一个错误信息:

运行时错误'1004': 对象'_Global'的方法'Range'失败

当我点击Debug按钮时,它会显示以下代码:

在代码的第四行突出显示了错误。

Sub clearTemplate()
    ' Clear Template Content
    Range(inputTemplateHeader) = NO_ENTRY
    Range(inputTemplateContent) = NO_ENTRY     - (highlighted error)
End Sub

Sub clearRefNo()
    ' Clear cell G2 reference number
    Range(cellRefNo) = NO_ENTRY

    ' Open "Report_ref_no.xls"
    If Not (IsFileOpen) Then Workbooks.Open filename:=ThisWorkbook.Path & "\" & FACCESS

    ' Activate "Report_ref_no.xls"
    Windows(FACCESS).Activate

    ' Access column D
    Range(cellFirstRefNo).Select
    Selection.End(xlDown).Select

    If refNo = Cells(ActiveCell.Row, ActiveCell.Column - 1).Value Then
        ' Log Development Code column
        Cells(ActiveCell.Row, ActiveCell.Column) = NO_ENTRY

        ' Log Issuer column
        Cells(ActiveCell.Row, ActiveCell.Column + 1).Value = NO_ENTRY

        ' Log Date column
        Cells(ActiveCell.Row, ActiveCell.Column + 2).Value = NO_ENTRY
    End If

    ' Save & Close workbook
    ActiveWindow.Close True
End Sub

有谁能帮助我解决这个问题吗?我不知道出了什么问题?


3
当您遇到错误时,inputTemplateContentNO_ENTRY的值是什么?使用Set Range(inputTemplateContent) = NO_ENTRY能行吗? - assylias
以防万一有人遇到同样的问题:如果您使用指定书和工作表的范围,并且最终出现此错误,请检查书名是否有空格(也许这很明显,但如果您有旧版宏并且从未使用过Excel的VBA,则可能会有些棘手)。 - EAmez
1个回答

32
当您像这样引用范围(Range)时,它被称为未限定引用(unqualified reference),因为您没有特别指定该范围所在的工作表。未限定引用由“_Global”对象处理,它确定您正在引用哪个对象,这取决于您的代码所在位置。
如果您在标准模块中,则未限定引用将引用ActiveSheet。如果您在工作表的类模块中,则未限定Range将引用该工作表。
inputTemplateContent是包含对范围的引用的变量,可能是一个命名范围。如果您查看该命名范围的RefersTo属性,在代码执行时它可能指向除Activesheet之外的其他工作表。
修复此问题的最佳方法是通过指定工作表避免使用未限定的Range引用,例如:
With ThisWorkbook.Worksheets("Template")
    .Range(inputTemplateHeader).Value = NO_ENTRY
    .Range(inputTemplateContent).Value = NO_ENTRY
End With

调整工作簿和工作表引用以适合您的特定情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接