Errore di run-time ‘1004’: metodo ‘Range’ di object’_Global ‘fallito

Ho un problema con Excel, con un modulo che genera un numero di riferimento. Ma quando provo a generare il riferimento no. ha un messaggio di errore che dice:

Errore di run-time ‘1004’: metodo ‘Range’ di object’_Global ‘fallito

Quando faccio clic sul pulsante Debug, mostra il codice come di seguito:

Evidenzia l’errore sulla quarta riga del codice

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 

Qualcuno può aiutarmi con questo problema ? Non so cosa è andato storto?

Quando si fa riferimento a Intervallo come quello, viene chiamato un riferimento non qualificato perché non si specifica in modo specifico su quale foglio si trova l’intervallo. I riferimenti non qualificati sono gestiti dall’object “_Global” che determina l’object a cui ti stai riferendo e che dipende da dove si trova il tuo codice.

Se ti trovi in ​​un modulo standard, Range non qualificato farà riferimento a Activesheet. Se ti trovi nel modulo di class di un foglio, l’intervallo non qualificato si riferirà a quel foglio.

inputTemplateContent è una variabile che contiene un riferimento a un intervallo, probabilmente un intervallo denominato. Se si osserva la proprietà RefersTo di tale intervallo denominato, è probabile che punti a un foglio diverso da Activesheet al momento dell’esecuzione del codice.

Il modo migliore per risolvere questo problema è di evitare riferimenti Range non qualificati specificando il foglio. Piace

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

Regola la cartella di lavoro e i riferimenti del foglio di lavoro per adattarla alla tua situazione specifica.