[英]Macro in workbook fails when other workbooks are open - Runtime Error 1004
當它是唯一打開的工作簿時宏工作正常,但是當任何其他工作簿打開時它會失敗。 我確信這是一個簡單的修復,但我無法弄清楚。 先感謝您。
Sub Sort_Leaders()
Dim wb As Workbook: Set wb = ThisWorkbook
wb.Worksheets("TABLE").ListObjects("Table1").Sort.SortFields.Clear
wb.Worksheets("TABLE").ListObjects("Table1").Sort.SortFields.Add _
Key:=Range("Table1[[#All],[Rank]]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With wb.Worksheets("TABLE").ListObjects("Table1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Call test
End Sub
ListObject
)快速( “簡單” )修復
利用
Key:=wb.Worksheets("TABLE").Range("Table1[[#All],[Rank]]")
代替
Range("Table1[[#All],[Rank]]")
這是簡稱
ActiveSheet.Range("Table1[[#All],[Rank]]")
一種不同的方法:引用對象
Sub SortLeaders()
Const wsName As String = "TABLE"
Const tblName As String = "Table1"
Const lcName As String = "Rank"
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim ws As Worksheet: Set ws = wb.Worksheets(wsName)
Dim tbl As ListObject: Set tbl = ws.ListObjects(tblName)
Dim lc As ListColumn: Set lc = tbl.ListColumns(lcName)
With tbl.Sort
With .SortFields
If .Count > 0 Then .Clear ' or just '.Clear'
.Add lc.Range, xlSortOnValues, xlAscending, , xlSortNormal
End With
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Call Test ' irrelevant
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.