2012-08-29 38 views
5

Tôi gặp sự cố với excel, với biểu mẫu tạo tham chiếu không. Nhưng khi tôi cố gắng tạo ra tham chiếu không. nó có một thông báo lỗi nói:Lỗi thời gian chạy '1004': Phương thức 'Phạm vi' của đối tượng'_Global 'không thành công

Run-time error '1004': Phương pháp 'Range' của object'_Global' thất bại

Khi tôi bấm vào nút Debug, nó cho thấy các mã như bên dưới :

Nó làm nổi bật các lỗi trên dòng thứ 4 của mã

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 

bất cứ ai có thể giúp tôi với vấn đề này? Tôi không biết chuyện gì đã xảy ra?

+3

Giá trị của 'inputTemplateContent' và' NO_ENTRY' khi bạn gặp lỗi là gì? Nó có hoạt động với 'Set Range (inputTemplateContent) = NO_ENTRY' không? – assylias

+0

Chỉ trong trường hợp bất kỳ ai có cùng vấn đề: nếu bạn sử dụng phạm vi chỉ định sách và trang tính và bạn kết thúc với lỗi này, hãy kiểm tra tên của sách không có khoảng trắng (có thể hiển nhiên nhưng nếu bạn có Macros cũ và bạn chưa bao giờ sử dụng VBA cho Excel, điều này có thể phức tạp). – EAmez

Trả lời

21

Khi bạn tham chiếu Phạm vi như vậy, nó được gọi là tham chiếu không đủ tiêu chuẩn vì bạn không cụ thể nói phạm vi của dải ô đó đang bật. Các tham chiếu không đủ tiêu chuẩn được xử lý bởi đối tượng "_Global" để xác định đối tượng nào bạn đang đề cập đến và đối tượng đó phụ thuộc vào mã của bạn ở đâu.

Nếu bạn đang ở trong một mô-đun chuẩn, Phạm vi không đủ tiêu chuẩn sẽ tham chiếu đến Activesheet. Nếu bạn đang ở trong mô-đun lớp của trang tính, Phạm vi không đủ tiêu chuẩn sẽ tham chiếu đến trang tính đó.

inputTemplateContent là biến chứa tham chiếu đến phạm vi, có thể là dải ô được đặt tên. Nếu bạn nhìn vào thuộc tính RefersTo của phạm vi được đặt tên đó, nó có khả năng trỏ đến một trang tính khác với Activesheet tại thời điểm mã thực hiện.

Cách tốt nhất để khắc phục điều này là tránh tham chiếu phạm vi không đủ điều kiện bằng cách chỉ định trang tính. Giống như

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

Điều chỉnh sổ làm việc và tham khảo trang tính để phù hợp với tình huống cụ thể của bạn.

Các vấn đề liên quan