我正在使用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
答案 0 :(得分:2)
这有效:
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
答案 1 :(得分:0)
xlAscending
和xlDescending
是Excel常量。要查看它们的值,只需在立即窗口中打印即可。请参阅下面的快照。
因此,您实际上可以将代码编写为
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
同样,xlSortOnValues
和xlSortNormal
的值为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
已被声明为整数或长整数,而不是字符串。