我有一些编程经验,但我绝对没有VBA。我一直在Excel中使用记录宏功能,但是当我尝试排序时遇到了问题。我所做的就是点击"记录宏"然后按一列进行排序。但是当我尝试在具有相似数据(不同行数)的不同Excel工作表上运行此宏时,我得到一个超出范围的错误。错误指向第一行,ActiveWorkbook ...
我知道这是一个简单的问题,但我对如何解决这个问题毫无头绪。我们将不胜感激,请记住,我没有VBA经验。
Sub Macro3()
'
' Macro3 Macro
'
' Keyboard Shortcut: Ctrl+q
'
ActiveWorkbook.Worksheets("ReportExport-3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("ReportExport-3").Sort.SortFields.Add Key:=Range( _
"G2:G15"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("ReportExport-3").Sort
.SetRange Range("A1:BB15")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
答案 0 :(得分:0)
在其他Excel工作表上运行此宏时,代码为:
ActiveWorkbook.Worksheets("ReportExport-3") ...
仍然按名称引用具有指定名称的工作表,即"ReportExport-3"
。我怀疑你想要的是引用ActiveSheet
,无论你运行宏时可能是什么,所以尝试将所有引用替换为:
Worksheets("ReportExport-3")
使用:
ActiveSheet
然后应该使用运行宏时活动工作表的任何内容。
答案 1 :(得分:0)
尝试替换所有出现的:
ActiveWorkbook
使用:
ThisWorkbook
在你的宏中。
这可以确保宏在包含它的工作簿上运行,而不是在活动工作簿上运行,该工作簿可能是不同的工作簿,不包含您引用的工作表(" ReportExport-3")。