L oop на листах, кроме сводки и последовательного копирования данных, получая ошибку 438 при вставке? Код прилагается ниже - PullRequest
0 голосов
/ 17 апреля 2020
Private Sub CommandButton1_Click()
    Dim a As Integer
    a = Application.Worksheets.Count - 1

    For i = 1 To a

        Worksheets(i).Activate


        Worksheets(i).Cells(10, 4).Select
        Worksheets(i).Cells(10, 4).Copy
        Worksheets("Summary").Activate
        Worksheets("Summary").Cells(1, 2).Selection.PasteSpecial xlPasteAll

        Application.CutCopyMode = False
    Next
End Sub

1 Ответ

0 голосов
/ 17 апреля 2020

проблема в:

Worksheets("Summary").Cells(1, 2).Selection

, поскольку Selection не является членом Range объекта

В стиле вашего исходного кода вы просто исправите его to:

Worksheets("Summary").Cells(1, 2).PasteSpecial xlPasteAll

Но вы должны избегать всего этого Selection и Activate и просто использовать полностью определенные диапазоны:

Private Sub CommandButton1_Click()
    Dim a As Long
    a = Application.Worksheets.Count - 1

    For i = 1 To a
        Worksheets(i).Cells(10, 4).Copy Worksheets("Summary").Cells(1, 2)
    Next
End Sub

Кстати, со своим кодом, в котором вы продолжаете писать * Ячейка 1016 *, чтобы она в конечном итоге заканчивалась значением ячейки D10 последней зацикленной таблицы

Если вы хотите продолжать заполнять Worksheets("Summary") столбец 2, используйте этот код:

Private Sub CommandButton1_Click()
    Dim a As Long

    a = Application.Worksheets.Count - 1    
    For i = 1 To a
         Worksheets(i).Cells(10, 4).Copy Worksheets("Summary").Cells(Rows.Count, 2).End(xlUp).Offset(1)
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...