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

时间:2012-08-29 09:26:41

标签: excel excel-vba vba

我有一个excel问题,一个表单生成一个引用号。但是,当我尝试生成引用号。它有一条错误消息:

  

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

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

突出显示代码第4行的错误

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

任何人都可以帮我解决这个问题吗?我不知道出了什么问题?

1 个答案:

答案 0 :(得分:28)

当您引用Range时,它被称为非限定引用,因为您没有具体说明该范围所在的工作表。非限定引用由“_Global”对象处理,该对象确定您引用的对象,并且取决于代码的位置。

如果您在标准模块中,则不合格的Range将引用Activesheet。如果您在工作表的类模块中,非限定范围将引用该工作表。

inputTemplateContent是一个变量,它包含对范围的引用,可能是命名范围。如果查看该命名范围的RefersTo属性,它可能会在代码执行时指向活动表以外的工作表。

解决此问题的最佳方法是通过指定工作表来避免不合格的Range引用。像

With ThisWorkbook.Worksheets("Template")
    .Range(inputTemplateHeader).Value = NO_ENTRY
    .Range(inputTemplateContent).Value = NO_ENTRY
End With

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