Автоматическое копирование строк из таблицы на новый лист - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь auto-copy определенный rows в Table от одного worksheet до отдельного worksheet.Ниже мой код.Первая половина скрывает / показывает конкретную Columns в зависимости от значения, введенного в Column B.Вторая половина предназначена для копирования через определенный rows, когда назначенное значение вводится в Column B.

Я могу заставить это работать, когда Мастер worksheet является Range, но не Table.Это моя попытка при форматировании Table.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B:B")) Is Nothing Then
    On Error GoTo safe_exit
    Application.EnableEvents = False
    '****************
    FilterAndCopy
    '****************
    Dim t As Range
    For Each t In Intersect(Target, Range("B:B"))
        Select Case (t.Value)
            Case "Change of Numbers"
                Columns("B:BP").EntireColumn.Hidden = False
                Columns("H:BL").EntireColumn.Hidden = True
                'do nothing
        End Select
    Next t

End If

safe_exit:
    Application.EnableEvents = True
End Sub

'****************

Sub FilterAndCopy()
    Dim rng As Range, sht1 As Worksheet, sht2 As Worksheet

    Set sht1 = Worksheets("MASTER")
    Set sht2 = Worksheets("CON")

    sht2.ListObjects(1).DataBodyRange.ClearContents

    With Intersect(sht1.Columns("B:BP"), sht1.ListObjects(1).DataBodyRange)
    .Cells.EntireColumn.Hidden = False ' unhide columns
    If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False

    Dim rngToCopy As Range
    .AutoFilter field:=1, Criteria1:="Change of Numbers"
    Set rngToCopy = Intersect(.SpecialCells(xlCellTypeVisible), sht1.Range("A:F, BL:BO"))
    Debug.Print rngToCopy.Address
    rngToCopy.Copy Destination:=sht2.Cells(4, "B")
    .Parent.AutoFilterMode = False

    .Range("H:BK").EntireColumn.Hidden = True ' hide columns
    End With
End Sub

Ошибка:

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