1

Excel VBA で並べ替え手順を使用しており、条件に応じて順序を昇順または降順に変更する変数を設定したいと考えています。これを試しましたが、「タイプの不一致」エラーが発生します。

If SBF = 0 Then
    S = "xlAscending"
Else: S = "xlDescending"
End If  
ActiveWorkbook.Worksheets(SN(x)).sort.SortFields.Add Key:=Range( _
        "B3:B" & last_cell), SortOn:=xlSortOnValues, Order:=S, DataOption:= _
        xlSortNormal
4

2 に答える 2

3

これは機能します:

Public Enumeration, XlSortOrder, instance

Dim instance As XlSortOrder
If SBF = 0 Then
    instance = xlAscending
Else: instance = xlDescending
End If
ActiveWorkbook.Worksheets(SN(x)).sort.SortFields.Add Key:=Range( _
    "B3:B" & last_cell), SortOn:=xlSortOnValues, Order:=instance, DataOption:= _
    xlSortNormal
于 2012-08-01T20:05:04.927 に答える
0

xlAscendingおよびxlDescendingExcel 定数です。値を確認するには、イミディエイト ウィンドウに表示します。以下のスナップショットを参照してください。

ここに画像の説明を入力

したがって、実際にコードを次のように書くことができます

If SBF = 0 Then S = 1 Else S = 2

ActiveWorkbook.Worksheets(SN(x)).Sort.SortFields.Add _
Key:=Range("B3:B" & last_cell), _
SortOn:=xlSortOnValues, _
Order:=S, _
DataOption:=xlSortNormal

同様に と の値xlSortOnValuesxlSortNormalです0。必要に応じて、上記のコードを次のように書くこともできます

If SBF = 0 Then S = 1 Else S = 2

ActiveWorkbook.Worksheets(SN(x)).Sort.SortFields.Add _
Key:=Range("B3:B" & last_cell), _
SortOn:=0, _
Order:=S, _
DataOption:=0

編集

Sこれは、文字列ではなく整数または長整数として宣言されていると想定しています。

于 2012-08-02T02:08:23.580 に答える