用于sorting的Excel常量

我正在使用Excel VBA中的sorting过程,并希望有一个variables集,根据条件将顺序更改为升序或降序。 我试过这个,但得到一个“types不匹配”的错误。

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 

这工作:

 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 

xlAscendingxlDescending是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 

类似地, 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被声明为一个整数或一个长整型而不是一个string。