簡體   English   中英

_Global 對象的方法范圍失敗

[英]Method Range of _Global object failed

由於以下代碼,我收到一個 Method Range of Object _Global failed 錯誤

有時此代碼有效,有時無效。 我了解它的原因,但不知道如何解決它。 我如何指定每次選擇哪個工作表以使其始終如一地工作。

'Fill Formulas'

Range(columnLetter & "5").Select
Selection.AutoFill Destination:=Range(columnLetter & "5:" & columnLetter & "113"), Type:=xlFillDefault

Range(columnLetter & "143").Select
Selection.AutoFill Destination:=Range(columnLetter & "143:" & columnLetter & "251"), Type:=xlFillDefault

這是我所有的代碼

Public Sub AutoUpdateCancels()

    Dim MySheetPath As String
    Dim Xl As Excel.Application
    Dim XlBook As Excel.Workbook
    Dim XlSheet As Excel.Worksheet
    Dim formattedDate As String
    Dim lngRow As Long, intCol As Integer, db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
    Dim columnLetter As String
    Dim qdf As DAO.QueryDef
    columnLetter = DLookup("[Column]", "[tblColumnIdentifier17]", "[WED] like #" & [Forms]![frmCancelsReporting]![txtCancelsWED] & "#")
    formattedDate = Format(Date, "mm-dd-yyyy")
    MySheetPath = "M:\Chris\Weekly Pulse\Cancel Report\2018\COM\Cancels Report - 2018v2.xlsx"

'Open Excel and the workbook and save a backup
    Set Xl = CreateObject("Excel.Application")
    Set XlBook = Xl.Workbooks.Open(MySheetPath, True)
    Xl.Visible = True
    XlBook.Windows(1).Visible = True
    Set XlSheet = XlBook.Worksheets(11)
    'Xl.ActiveWorkbook.SaveAs FileName:="M:\Chris\Weekly Pulse\Cancel Report\Backups\COM Backup 03-12-2018.xlsx"

'Clear Detail'
    Xl.Range("A256:D371").Select
    Xl.Selection.ClearContents


'Starting Row Number'
    lngRow = 256
'Append New Detail'
    Set db = CurrentDb
    Set qdf = db.QueryDefs("qryCancelsReport")
    qdf.Parameters("EndDate").Value = [Forms]![frmCancelsReporting]![txtCancelsWED]
    Set rst = qdf.OpenRecordset()
    Xl.Cells(lngRow, 1).CopyFromRecordset rst


'Fill Formulas'

    Range(columnLetter & "5").Select
    Selection.AutoFill Destination:=Range(columnLetter & "5:" & columnLetter & "113"), Type:=xlFillDefault

    Range(columnLetter & "143").Select
    Selection.AutoFill Destination:=Range(columnLetter & "143:" & columnLetter & "251"), Type:=xlFillDefault



    Set rst = Nothing
    Set db = Nothing
    Set Xl = Nothing
    Set XlBook = Nothing
    Set XlSheet = Nothing
MsgBox ("Make sure to save over original worksheet not as backup")
End Sub

您沒有引用正確的對象(例如:您使用 Xl.Range() 而不是 xlSheet.Range())

避免使用 Select/Selection/Activate/ActiveXXX 編碼模式並使用完全限定的范圍引用(例如使用 xlSheet.Range() 而不是 Range())

所以試試這個片段:

With XlBook.Worksheets(11) ‘reference wanted sheet. From now on and till next ‘End With’ all referenced sheet members (like its Range()) are just a dot (.) away:

    'Clear Detail'
    .Range("A256:D371").ClearContents

    'Starting Row Number'
    lngRow = 256

    'Append New  
    ....

    .Cells(lngRow, 1).CopyFromRecordset rst

    'Fill Formulas'

    .Range(columnLetter & "5").AutoFill Destination:=.Range(columnLetter & "5:" & columnLetter & "113"), Type:=xlFillDefault

    .Range(columnLetter & "143").AutoFill Destination:=.Range(columnLetter & "143:" & columnLetter & "251"), Type:=xlFillDefault

End With

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM