2017-04-05 5 views
1

非常に初心者のプログラマーので、私の質問があまりにも愚かではないことを願っています。私はコールできる共通のソートサブルーチンを設定しようとしていますが、ソートサブルーチンはその範囲の変数を調べます。このようにして、ソートルーチンにハードコードされていない場所(サブルーチンと呼ばれるボタンなど)を別の場所に設定することができます。VBA:並べ替えサブの変数として格納された範囲を参照する

これまでの思考の私の列車はこれです:Range("A4:A100")はサブSortCodeDscにある場合

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 

だから私が代わりに私がA4からA100の範囲に設定する変数の列を呼び出すしたいと思います。サブルーチンを呼び出すときに、その変数を正しく呼び出すにはどうすればよいですか?

+0

'Private'または' Range'などの公共の列は、使用 'COLUMN' http://www.vb6.us/tutorials/vb6-variable-scopeまた、それに機能を一般化するワークシートを渡すことができ –

答えて

0

"Column"という単語を変数として使用することは、おそらく良い考えではありません。それは救われた言葉でなければなりません。代わりにColumn1を使用して、関数にサブパラメータを渡し、rangeパラメータを渡します。

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 
+0

異なるアプリケーションのために。好きな –

関連する問題