2012-08-29 17 views
5

Tengo un problema con excel, con un formulario que genera un no de referencia. Pero cuando intento generar el no de referencia que tiene un mensaje de error que dice:Error en tiempo de ejecución '1004': Método 'Rango' de object'_Global 'failed

en tiempo de ejecución de error '1004': 'Rango' Método de object'_Global' no

Cuando hago clic en el botón de depuración, se muestra el código de la siguiente manera :

Se resaltar el error en la cuarta línea del código

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 

¿Puede alguien ayudarme con este problema? No sé lo que salió mal?

+3

¿Cuáles son los valores de 'inputTemplateContent' y' NO_ENTRY' cuando obtiene el error? ¿Funciona con 'Set Range (inputTemplateContent) = NO_ENTRY'? – assylias

+0

Solo en caso de que alguien tenga el mismo problema: si utiliza el libro y la hoja que especifica el rango y termina con este error, el nombre del libro no tiene espacios en blanco (tal vez sea obvio, pero si tiene Macros heredadas y nunca ha usado VBA para Excel esto puede ser complicado). – EAmez

Respuesta

21

Cuando hace referencia a Rango como ese, se denomina referencia no calificada porque no especifica en qué hoja está el rango. Las referencias no calificadas son manejadas por el objeto "_Global" que determina a qué objeto se refiere y que depende de dónde está el código.

Si se encuentra en un módulo estándar, el Rango no calificado se referirá a la Hoja activa. Si se encuentra en el módulo de clase de una hoja, el Rango no calificado se referirá a esa hoja.

inputTemplateContent es una variable que contiene una referencia a un rango, probablemente un rango con nombre. Si observa la propiedad RefersTo de ese rango con nombre, probablemente apunte a una hoja que no sea la Activesheet en el momento en que se ejecuta el código.

La mejor manera de solucionar esto es evitar las referencias de rango no calificadas al especificar la hoja. Como

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

Ajuste el libro de trabajo y las hojas de trabajo para que se adapte a su situación particular.

Cuestiones relacionadas