在 Excel 电子表格上运行宏时,出现运行时错误:
1004 无法使用指定的范围完成命令。
选择Debug,高亮的代码为:
Selection.Subtotal GroupBy:=5, Function:=xlSum, TotalList:=Array(6, 7, 8, 9, _
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23), Replace:=True, _
PageBreaks:= False, SummaryBelowData:=True
查看其他地方后我发现这通常意味着在没有选择单元格的情况下尝试了排序。
但是,突出显示的代码之前的一行是:
SubRange.Select
紧接着这两行代码的两行本质上是相同的,只是对工作表的不同部分进行了排序:
SortRange.Select
Selection.Sort Key1:=Range("E4"), Order1:=xlAscending, Key2:=Range("A4") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
SortRange.Select 和 SubRange.Select 之间的区别是什么?
在测试中,我发现当将包含数值的某一列作为文本导入而不是作为常规导入时,会发生错误。列数据是数字,但它有前导零,不能进行数学运算,因此,按照良好的 Excel 做法,应该将其视为文本。
有什么想法我应该做什么来尝试诊断这个问题?
答案1
我只需在 Subrange.Select 之后添加以下内容:
Selection.NumberFormat = "@"
将子范围设置为文本格式。