gpt4 book ai didi

CustomOrder 上的 VBA 类型不匹配

转载 作者:行者123 更新时间:2023-12-04 14:13:12 24 4
gpt4 key购买 nike

我有这个很好用的代码:

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

我正在尝试使用名为 keyRange 的变量来修改上述代码。为 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

但是我得到一个类型不匹配错误。
我可以在 MSDN 中看到 CustomOrder:=类型为 Variant .我试过 Variant而不是 String ,但我得到了同样的错误。

编辑:
CustomOrder 实际上是类型 SortField .
如何将 String keyRange 转换为 SortField 对象?

最佳答案

很高兴你想出来了。以下也适用(按 this post ):

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

编辑:更简单
CustomOrder:=CVar(keyRange)

编辑:为什么这有效?

我一直试图自己弄清楚这一点。 CustomOrder 上的帮助文档正如您在搜索中发现的那样,该属性(property)没有任何肉类。我一直在尝试不同的东西,看看我是否能得到答案,但我运气不佳。我想 CustomOrder在后台做一些魔术。使用 String 就可以了文字或 Long ,正如你所发现的。它没有问题 String正确转换为 Variant .但它不喜欢 String变量。肯定跟 String有关变量是引用类型。我不知道为什么它不能处理这个问题,但我也不知道它是如何从 String 动态创建自定义列表的。文字。如果你找到任何可以解释它的东西,我很想知道。

关于CustomOrder 上的 VBA 类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com