非常新手程序员所以希望我的问题不是太愚蠢。我试图设置一个我可以调用的公共排序子例程,但是排序子例程查看范围的变量。这样我可以在其他地方设置范围(例如我调用子程序的按钮),而不是将其硬编码到排序例程中。
到目前为止,我的思路是这样的:
Dim Column As Range
Sub SortCodeDsc()
ActiveWorkbook.Worksheets("Benchmark Data").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Benchmark Data").Sort.SortFields.Add Key:=Range("A4:A100").Value, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Benchmark Data").Sort
.SetRange Range("A4:HH100")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Private Sub Year_Click()
Set Column = ActiveSheet.Range("A4:A100")
Call SortCodeDsc
End Sub
因此Range("A4:A100")
位于子SortCodeDsc
中我想改为将我设置的变量列调用A4
到A100
的范围。在调用子例程时如何正确调用该变量?
答案 0 :(得分:0)
使用" Column"这个词可能不是一个好主意。作为变量。这应该是一个保存的词。使用Column1代替并将您的sub转换为函数,并将范围参数传递给它。
Function SortCodeDsc(columnRange As Range)
ActiveWorkbook.Worksheets("Benchmark Data").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Benchmark Data").Sort.SortFields.Add Key:=columnRange, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Benchmark Data").Sort
.SetRange Range("A4:HH100")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Function
Private Sub Year_Click()
Dim column1 As Range
Set column1 = ActiveWorkbook.Worksheets("Benchmark Data").Range("A1:A100")
Run SortCodeDsc(column1)
End Sub