Range.End 1004 ошибка при управлении Excel через Access - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь получить доступ к записи в две ячейки книги Excel при каждом заполнении формы.

При использовании Range().End().

* я получаю ошибку 1004. 1005 *R и C - это переменные, которые я использую для изоляции функций, чтобы выяснить причину проблемы.
Option Compare Database

Private Sub Form_AfterUpdate()
'This macro will update the Excel WO Tracker for a project each time an NCR is closed or resolved

Dim xl As Object 'Excel
Dim tracker As Object 'Book
Dim sn As Object 'Sheet\
Dim connect(1) As Variant 'WO and NCR#

'Debugging variables
Dim R As Object
Dim C As Object

'Exit if required fields are blank
If (Title.Value = "") Or (status.Value = "") Or (Program.Value = "") Or _
  (Disposition.Value = "") Or ([Work Order Number].Value = "") Then
    Exit Sub
End If
'On Error GoTo Handler

If (status.Value = "Closed") Or (status.Value = "Resolved") Then
    Set xl = CreateObject("Excel.Application")
    xl.ScreenUpdating = False
    Select Case Program.Value
    Case "SE07"
        Set tracker = xl.Workbooks.Open("Z:\Operations\Projects\SE07\" & Year(Now()) & " SE07 WO Tracker.xlsm")
    Case "VS02"
        Set tracker = xl.Workbooks.Open("Z:\Operations\Projects\VS01\" & Year(Now()) & " VS02 WO Tracker.xlsm")
    Case Else 'Program does not have a WO Tracker
        xl.ScreenUpdating = True
        Set xl = Nothing
        Exit Sub
    End Select

    Set sn = tracker.Sheets("SN")
        'Record NCR connection
        connect(0) = [Work Order Number].Value
        connect(1) = Title.Value
        Set R = xl.Intersect(sn.Range("FirstCol"), sn.Range("NCRConnect"))

        'Error 1004 thrown here:
        Set C = R.End(xlToRight)

        xl.Intersect(sn.Range("NCRConnect"), sn.Columns(C.Column + 1)) = xl.Transpose(connect)
    End If

    tracker.Save
    tracker.Close
    Set tracker = Nothing
    Set sn = Nothing
    xl.ScreenUpdating = True
    Set xl = Nothing
End Sub

Кроме того, этот код работает очень медленно. Есть ли способ ускорить это?

1 Ответ

2 голосов
/ 10 февраля 2020

xlToRight является членом объектной модели Excel, а именно: перечисление XlDirection .

Если вы используете позднюю привязку, добавьте следующее:

Const xlToRight As Long = -4161
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...