我创建了一个宏来取消保护工作表,取消选择空白,对列进行排序,重新应用空白,然后重新保护工作表。该代码在我的计算机上可以很好地工作,但是当我尝试在其他计算机上打开它时,我会得到
错误代码438。
注意:我需要选择空格,因为我正在尝试使用公式对列进行排序。这些列将无法正确排序,因为该公式在缺少信息的区域中显示空白。
所有计算机都具有相同的操作系统,相同的excel版本,并且该文件保存在共享驱动器上,因此应无任何更改。我已经确保在每台计算机上都启用了宏,但是仍然无法正常工作。
下面是代码。有人看到我缺少的任何明显的问题吗?我是VBA和Macros的新手,但我已经进行了大量的阅读和研究,似乎无法弄清楚。
下面是更新的代码:
Sub Short2Long()
'
' Short2Long Macro
'
'
Worksheets("Reunification").Unprotect
Worksheets("Reunification").ListObjects("Reunification_Main").Range.AutoFilter Field:=1, _
Criteria1:="<>"
ThisWorkbook.Worksheets("Reunification").ListObjects("Reunification_Main"). _
Sort.SortFields.Clear
ThisWorkbook.Worksheets("Reunification").ListObjects("Reunification_Main"). _
Sort.SortFields.Add2 Key:=Range("Reunification_Main[[#All],[Days in Care]]") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ThisWorkbook.Worksheets("Reunification").ListObjects( _
"Reunification_Main").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Worksheets("Reunification").ListObjects("Reunification_Main").Range.AutoFilter Field:=1
Worksheets("Reunification").Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingColumns:=True, AllowFormattingRows:=True, _
AllowSorting:=True, AllowFiltering:=True
答案 0 :(得分:0)
最后弄清楚了问题所在。它与Excel 365 vs 2010问题有关。
Excel 365期望:
Sort.SortFields.Add2
但是Excel 2010期望:
Sort.SortFields.Add
尽管所有计算机都运行Excel 365,但是删除2可以解决此问题。