Ошибка выполнения VBA 1004 Ошибка приложения или объекта - PullRequest
0 голосов
/ 01 мая 2018

Здравствуйте. Я новичок в VB и пытаюсь скопировать данные с одного листа рабочей книги на другой лист другой рабочей книги, но когда я пытаюсь это сделать, я получаю сообщение об ошибке:

«Ошибка 1004: ошибка приложения или объекта»

Один и тот же код выдал необходимый вывод, но он не работает каждый раз.

Поиск данных для выбора пользователем даты в Working листе файла Weather Dashboard в Master файле Sheet1 и вставка в Weather Dashboard.

Основной файл содержит 200000 строк данных, а общее количество копируемых данных будет около 1000 строк.

Private Sub CommandButton1_Click()
    Windows("Weather Dashboard.xlsm").Activate
    stra = Worksheets("Working").Cells(1, 1)

    'stores user input date as integer in stra
    Workbooks.Open Filename:="C:\Users\Desktop\Master.xlsx"
    Worksheets("Sheet1").Select
    a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

    For j = 0 To 9
        For i = 2 To a
            'Search for the chosen date & following 9 days from Master File
            If Worksheets("Sheet1").Cells(i, 5).Value = stra + j Then
                Worksheets("Sheet1").Rows(i).Copy
                Windows("Weather Dashboard.xlsm").Activate
                b = Worksheets("Working").Cells(Rows.Count, 1).End(xlUp).Row
                Worksheets("Working").Cells(b + 1, 1).Select

                ActiveSheet.Paste

                Windows("Master.xlsx").Activate
                Worksheets("Sheet1").Activate
            End If
        Next i
    Next j
    Application.CutCopyMode = False
End Sub

1 Ответ

0 голосов
/ 01 мая 2018

Я просто переписываю, чтобы удалить неявные ссылки здесь: не решая никаких других проблем

Option Explicit
Private Sub CommandButton1_Click()
dim a as long
dim b as long
Dim Stra as integer
dim wbDash as workbook
set wbDash =  workbooks("Weather Dashboard.xlsm")   
stra =wbdash.Worksheets("Working").Cells(1, 1)
dim wb as workbook
'stores user input date as integer in stra
set wb = Workbooks.Open("C:\Users\Desktop\Master.xlsx")
with wb.Worksheets("Sheet1")
    a = .Cells(.Rows.Count, 1).End(xlUp).Row

    For j = 0 To 9
        For i = 2 To a
            'Search for the chosen date & following 9 days from Master File
            If .Cells(i, 5).Value = stra + j Then
                 b = wbdash.Worksheets("Working").Cells(Rows.Count, 1).End(xlUp).Row
               .Rows(i).Copy _
                  destination:=
                wbdash.Worksheets("Working").Cells(b + 1, 1)


            End If
        Next i
    Next j
end with   
End Sub

Думаю, это избавит вас от ошибки

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