我正在尝试将范围传递给子例程,但是它抛出了“对象'_Global'的方法'Range'失败”错误。
在主要方面,我声明并定义了要使用的范围变量:
Sub maintest()
Dim ScheduledSort As Range
Set ScheduledSort = Range("F4:F321")
Call test(ScheduledSort)
End Sub
然后在子例程测试中,我希望它使用我从上面的例程传递过来的范围进行排序:
Sub test(RangeForSort)
Sheets("SheetTest").Select
' Sort in descending order
ActiveWorkbook.Worksheets("SheetTest").AutoFilter.Sort.SortFields.Add _
Key:=Range("RangeForSort"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("SheetTest").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
我认为这是错误的,Key:=Range("RangeForSort")
但我无法弄清楚为什么以及如何解决。
我在使用Range时出了什么问题,如何解决它以便可以将其传递给任何Range进行排序?
如果您对我的工作有更好的建议,请随时添加!:-)
较短的版本如下所示:
Sub test(rng As Range)
' Sort in descending order
Worksheets(rng.Parent.Name).AutoFilter.Sort.SortFields.Add _
Key:=rng, SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortTextAsNumbers
With Worksheets(rng.Parent.Name).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
跑步:
Call test(Worksheets("YOUR WORKSHEET NAME").Range("YOUR RANGE")).
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句