首页>Program>source

我在使用excel时遇到问题,该表格会生成参考号.但是当我尝试生成参考号时.它显示一条错误消息:

Run-time error '1004' : Method 'Range' of object'_Global' failed

当我单击"调试"按钮时,它显示如下代码:

突出显示代码第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

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

最新回答
  • 2021-1-11
    1 #

    当您引用这样的Range时,它被称为不合格的引用,因为您没有具体说出该范围在哪张纸上.不合格的引用由" _Global"对象处理,该对象确定您要引用的对象,并取决于代码的位置。

    如果您使用的是标准模块,则不合格的范围将引用Activesheet.如果您在工作表的班级模块中,则不合格的范围将引用该工作表。

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

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

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

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

  • 在关闭时销毁PHP会话
  • python:为什么map()和列表理解的结果不同?