У меня есть рабочий script
, который auto-copies
специфичен cells
от мастера Sheet
до вторичного Sheet
. Это script
работает нормально, если мастер установлен как range
, но возвращает ошибку при преобразовании в table
.
Сценарий:
Option Explicit
Sub FilterAndCopy()
Dim rng As Range, sht1 As Worksheet, sht2 As Worksheet
Set sht1 = Worksheets("SHIFT LOG")
Set sht2 = Worksheets("FAULTS RAISED")
sht2.UsedRange.ClearContents
With Intersect(sht1.Columns("B:BP"), sht1.UsedRange)
.Cells.EntireColumn.Hidden = False ' unhide columns
If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
'within B:BP, column B is the first column
.AutoFilter field:=1, Criteria1:="Faults Raised"
'within B:BP, Columns B:C, AC:AE, BP are referenced as .Columns A:B, AB:AD, BO
.Range("A:B, AB:AD, BO:BO").Copy Destination:=sht2.Cells(4, "B")
.Parent.AutoFilterMode = False
'no need to delete what was never there
'within B:BP, Columns C:AA, AE:BN, BP are referenced as .Columns B:Z, AD:BM
.Range("B:Z").EntireColumn.Hidden = True ' hide columns
.Range("AD:BM").EntireColumn.Hidden = True ' hide columns
End With
End Sub
Я пытался изменить Range
на Table
в течение script
(см. Ниже). Но он возвращает ошибку в следующей строке.
Option Explicit
Sub FilterAndCopy()
Dim rng As Table, sht1 As Worksheet, sht2 As Worksheet
Set sht1 = Worksheets("SHIFT LOG")
Set sht2 = Worksheets("FAULTS RAISED")
sht2.UsedTable.ClearContents
With Intersect(sht1.Columns("B:BP"), sht1.UsedTable)
.Cells.EntireColumn.Hidden = False ' unhide columns
If .Parent.AutoFilterMode Then .Parent.AutoFilterMode = False
'within B:BP, column B is the first column
.AutoFilter field:=1, Criteria1:="Faults Raised"
'within B:BP, Columns B:C, AC:AE, BP are referenced as .Columns A:B, AB:AD, BO
.Table("A:B, AB:AD, BO:BO").Copy Destination:=sht2.Cells(4, "B")
.Parent.AutoFilterMode = False
'no need to delete what was never there
'within B:BP, Columns C:AA, AE:BN, BP are referenced as .Columns B:Z, AD:BM
.Table("B:Z").EntireColumn.Hidden = True ' hide columns
.Table("AD:BM").EntireColumn.Hidden = True ' hide columns
End With
End Sub
.AutoFilter field:=1, Criteria1:="Faults Raised"
Ошибка: Ошибка времени выполнения «1004»: сбой метода «Автофильтр» объекта «Диапазон»