Отменить выбор после автофильтра

Это кажется невероятно простым и прямым, но независимо от того, сколько тестов и поиска я делаю, я не могу решить. В настоящее время у меня есть сценарий, который включает AutoFilter, не выбирая ничего, но я думал, что могу скопировать данные и вставить их в новый лист без выбранных данных. Однако после завершения действия он показывает выбранные столбцы A: K. Мне не удалось выяснить, как отменить выбор этих столбцов на листе, и я не смог выяснить, как их копировать и вставлять, если они не будут выбраны в первую очередь. Любые рекомендации приветствуются. Благодарю.

Sub RunScript() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Sheets("Data") Sheets.Add.Name = "copy" Dim galreqws As Worksheet Set galreqws = ThisWorkbook.Sheets("copy") Sheets("Data").Select Range("A:K").AutoFilter ws1.Range("A1:K1000").Copy Destination:=Sheets("copy").Range("A1:K1000") galreqws.Delete 'Sheets("Data").Select Range("A:K").AutoFilter Range("A:K").Select Sheets("Buttons").Select Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 

    Обычно это неправильная практика. .Select если вы действительно не намерены видеть выбранный диапазон. Насколько я знаю, нет никаких действий, где требуется .Select .

    Ниже приведено несколько предложений, которые вы можете сделать для улучшения кода:

     Sub RunScript() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim wsCurrent As Worksheet Set wsCurrent = ActiveSheet Dim wsData As Worksheet Set wsData = ThisWorkbook.Worksheets("Data") Dim wsGalreq As Worksheet ' Note that .Add will activate the new sheet so we'll ' need to reactivate the worksheet that was previously active 'Set wsGalreq = Worksheets.Add 'wsGalreq.Name = "copy" Set wsGalreq = Worksheets("copy") wsData.Range("A:K").AutoFilter 1, "Supplier A" ' Find the used range in columns A to K and copy over starting ' at cell A1 of wsGalreq Intersect(wsData.UsedRange, wsData.Range("A:K")).Copy Destination:=wsGalreq.Range("A1") ' Doubt deleting the new sheet was intentional? ' wsGalreq.Delete ' Now change the view to the desired worksheet, uncomment one: 'Worksheets("Buttons").Select 'wsCurrent.Activate Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub 

    Удалите строку из кода.

     Range("A:K").Select 
    Давайте будем гением компьютера.