gpt4 book ai didi

vba - 获取 VBA 对话框的选项(xlDialogSort)

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

我需要在几张纸上实现相同的排序。此外,我希望用户使用标准排序对话框窗口手动设置排序规则。

因此,我想创建一个将启动 Dialogs(xlDialogSort) 窗口的程序,在用户指定排序参数并单击“确定”后,程序将“读取”这些参数并通过宏(标准排序代码)将它们应用于多个工作表。

目前我的代码如下所示:

Public Sub sortMultipleSheets()
Dim sortDiagAnswer As Boolean

sortDiagAnswer = Application.Dialogs(xlDialogSort).Show

If Err.Number = 1004 Then
MsgBox "Place the cursor in the area to be sorted"
Exit Sub
End If
Err.Clear

If sortDiagAnswer Then
'read user defined parameters
'...

actualSort (wsh1)
actualSort (wsh2)
End If

End Sub

Private Sub actualSort(ByVal wsh As Worksheet)
With wsh.Sort
With .SortFields
.Clear
.Add Key:= 'user-defined key1
.Add Key:= 'user-defined key2
.Add Key:= 'user-defined key3
'any more user-defined keys
End With
.SetRange Range('actual range)
.Header = 'setting from the sorting dialog window
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

我错过了在点击 OK 按钮时将获得用户定义参数的部分。
请问有什么想法吗?

最佳答案

据我所知,您无法从对话框中获取参数。您可以使用 Show 方法发送参数,但它们必须是 ByVal,因为它们不会更改。排序和查找(可能还有其他一些)参数从一个调用到另一个调用持续存在。这意味着下次您对同一范围进行排序时,对话框将记住您上次所做的操作。通常从代码的角度来看这是很危险的,但你可以在这里利用它来发挥你的优势。

Dim srt As Sort

If Application.Dialogs(xlDialogSort).Show Then
Set srt = ActiveSheet.Sort
Debug.Print srt.SortFields(1).Key.Address
End If

用户为第一个排序字段的键选择的任何内容都将打印到立即窗口。您可以在对话框关闭后立即获取 Sort 对象的任何属性以查看选择的内容。显然,拼凑出一张完整的图片会比上面的代码更复杂。

关于vba - 获取 VBA 对话框的选项(xlDialogSort),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33395894/

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