I have a working script that auto-copies specific cells from a Master Sheet to a secondary Sheet. This script works fine if the Master is set as a range but returns an error when converted to a table.
Script:
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
I have tried changing Range to Table throughout the script (see below). But it returns an error on the following line.
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"
The error is: Run-time error '1004': Method 'Autofilter' of object 'Range' failed