【发布时间】:2017-12-29 12:28:43
【问题描述】:
我正在尝试按名字和姓氏对我的 Excel 工作表进行排序,我想知道是否可以将多个宏分配给一个按钮?假设我点击一次,它按名字排序;再次单击它会按姓氏排序。这可能吗?因为找不到类似的问题,所以我问了。
这是我的代码
名字
Columns ("D:D").Select
ActiveWorkbook.Worksheets(Sheet1") .Sort.SortFields.clear
ActiveWorkbook.Worksheets(Sheet1") .Sort.SortFields.Add Key:=Range("D1"),
Sorton::x=SortOnValues, Order:=xlDesending, DataOption:=xlSortNormal
with ActiveWorkbook.Worksheets("sheet1") .Sort
.SetRange Range("A1:K505")
Header = X1No
.MatchCase = False
.Orientation = x1TopToBottom
.SortMethod = x1PinYin
.Apply
End With
ActiveWindow.SmallScroll Down:=-495
End Sub
显然其他代码是相似的,但降序而不是升序。
【问题讨论】:
-
根据您的需要,这甚至可能根本不需要宏或按钮。如果您将数据格式化为 Excel 表格(主页 --> 格式化为表格),您可以使用过滤器按钮直接对列进行排序。如果您正在构建一个需要独立控件(宏按钮等)的应用程序,那么您可能仍希望使用表结构,以便您可以根据需要动态添加/删除行和列。我个人更喜欢使用 ListObjects(表如何在 VBA 中表示)而不是范围,特别是这样您就可以按名称访问列,更轻松地操作数据和结构...