我有这段较长的VBA(另请参阅我之前的问题:https://stackoverflow.com/questions/53206850/copy-rows-which-match-criteria-into-two-or-more- Different-sheets-在-excel-with-v).
某一特定部件无法正常工作。我想要一个表格在模块中执行之前的操作后立即ShowAllData。 到目前为止,我编写的这段代码,只要我在 来自表格的某个单元格 时 运行 , 就可以正常工作 。一旦我从工作表上的另一个位置运行它,它就不会再次显示所有数据。它一直挂在桌子的过滤模式下。
Sub CopyOrders()
'Sorting column STOCK in ORDERS from A-Z
Worksheets("Orders").ListObjects("Orders").Sort. _
SortFields.Clear
Worksheets("Orders").ListObjects("Orders").Sort. _
SortFields.Add2 Key:=Range("Orders[[#All],[STOCK]]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With Worksheets("Orders").ListObjects("Orders").Sort
.Apply
End With
'Delete all rows from table NoStockOrders
On Error Resume Next
Worksheets("NoStockOrders").ListObjects("NoStockOrders").DataBodyRange.EntireRow.Delete
'Copy all orders which have no stock to
'the sheet NoStockOrders
Worksheets("Orders").Range("ORDERS").AutoFilter _
Field:=6, Criteria1:="0", VisibleDropDown:=True
On Error Resume Next
Worksheets("Orders").Range("ORDERS").SpecialCells _
(xlCellTypeVisible).Copy
Range("NoStockOrders").PasteSpecial _
Paste:=xlPasteValues
If Worksheets("Orders").ListObjects("Orders").FilterMode Then
Worksheets("Orders").AutoFilter.ShowAllData
End If
应该是:
Worksheets("Orders").ListObjects("Orders").Autofilter.showalldata
可以是这样的:
With ActiveSheet.ListObjects(1) 'Change table No as you want
If Not .AutoFilter Is Nothing Then .AutoFilter.ShowAllData
End With