Копирование консолидации данных из нескольких рабочих листов в .ActiveWorksheet - PullRequest
0 голосов
/ 03 октября 2018

Я работал с этой статьей, чтобы попытаться объединить данные из нескольких листов в единую сводную таблицу.У меня почти получилось, но я пытаюсь изменить конечный рабочий лист.

Я пытаюсь, чтобы консолидированные данные отображались в ячейке B4 на листе Consolidated Tracker.

 With CopyRng

         Set DestSh = ThisWorkbook.Worksheets("Consolidated Tracker")
         Set myRange = DestSh.Range("B4")

 End With

Проблема в том, что myRange всегда пуст и ничего не копируется.

Нет ошибок, кажется, что выполняется f8, как и ожидалось, без копирования чего-либо.


Полный коддля справки:

Sub CopyRangeFromMultiWorksheets()

    Dim sh As Worksheet
    Dim DestSh As Worksheet
    Dim Last As Long
    Dim CopyRng As Range

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    ' Loop through all worksheets and copy the data to the
    ' summary worksheet.
    For Each sh In ActiveWorkbook.Worksheets

            ' Find the last row with data on the summary worksheet.
            Last = LastRow(DestSh)

            ' Specify the range to place the data.
            Set CopyRng = sh.Range("B4:B50")

            ' This statement copies values
            With CopyRng
                 Set DestSh = ThisWorkbook.Worksheets("Consolidated Tracker")
                 Set myRange = DestSh.Range("B4")
            End With

        'End If
    Next

ExitTheSub:

    Application.Goto DestSh.Cells(4, 2)

    ' AutoFit the column width in the summary sheet.
    DestSh.Columns.AutoFit

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub    

1 Ответ

0 голосов
/ 04 октября 2018

Проблема в том, что код никогда не выполняет команду любого типа для перемещения данных.Код только устанавливает переменные.

Посмотрите на измененный код, приведенный ниже, в частности, на последнюю строку перед символом конца.

' Specify the range to place the data.
Set CopyRng = sh.Range("B4:B50")

' This statement copies values
With CopyRng
    Set DestSh = ThisWorkbook.Worksheets("Consolidated Tracker")
    DestSh.Range("B4").Resize(CopyRng.Rows.Count,1).Value = CopyRng.Value
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...