我有这个代码非常有效:
Sub NewSortTest()
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add key:=Range("A1:A20") _
, SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"alpha,bravo,charlie,delta,echo,foxtrot,golf,hotel,india,juliet", DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:B20")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
我试图通过使用一个名为keyRange
for 的变量来修改上面的代码CustomOrder:=
:
Sub NewSortTest()
Dim keyRange As String
keyRange = "alpha,bravo,charlie,delta,echo,foxtrot,golf,hotel,india,juliet"
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add key:=Range("A1:A20") _
, SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
keyRange, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:B20")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
但是我收到类型不匹配错误.我可以在MSDN中看到CustomOrder:=
类型Variant
.我试过Variant
而不是String
,但我得到了同样的错误.
编辑:CustomOrder实际上是SortField类型.如何将String keyRange转换为SortField对象?
很高兴你想出来了.以下也有效(根据这篇文章):
Sub NewSortTest()
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A1:A20"), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
CustomOrder:=keyRange, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A1:B20")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Function keyRange() As String
keyRange = "alpha,bravo,charlie,delta,echo,foxtrot,golf,hotel,india,juliet"
End Function
Run Code Online (Sandbox Code Playgroud)
编辑:更容易
CustomOrder:=CVar(keyRange)
Run Code Online (Sandbox Code Playgroud)
编辑:为什么这有效?
我一直试图弄明白自己.CustomOrder
正如您在搜索中发现的那样,该物业的帮助文档缺乏任何肉食.我一直在尝试不同的事情,看看我是否能得到答案,而且我没有多少运气.我认为CustomOrder
在后台做一些魔术.正如你所发现String
的Long
,它可以用文字或a 做得很好.它没有String
适当的演员阵容Variant
.但它不喜欢String
变量.它必须与String
变量作为引用类型有关.我不知道它为什么不能处理它,但我也不知道它如何从String
文字中动态创建自定义列表.如果你找到解释它的任何东西,我很想知道.
归档时间: |
|
查看次数: |
3534 次 |
最近记录: |