excel - Excel VBA - 说明
问题描述
我只是想知道是否有人对这段 VBA 代码的作用有任何建议。我的一位同事最近离开了,没有评论他们的任何工作,所以我有点困惑。
有一些代码可以对某些单元格进行排序,但我不确定它是如何知道要排序的,因为指定了一个范围,这不是我想要排序的数据。我想我遗漏了一些东西,但网上似乎没有什么可以很好地解释 Excel VBA。
代码如下所示:
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.ActiveSheet.SORT.SortFields.Clear
ActiveWorkbook.ActiveSheet.SORT.SortFields.Add Key:=ActiveCell, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.ActiveSheet.SORT
.SetRange ActiveCell.Range("A1:A550")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveCell.Offset(0, 1).Range("A1").Select
我知道最重要的东西设置了用于对数据进行排序的标准,但我不确定为什么 range("A1:A550") 存在,因为要排序的数据通常从单元格 C15 周围的某个地方开始。代码是否只是说“将当前单元格用作 A1,从中选择接下来的 550 行并相应地对数据进行排序”?
谢谢大家。
解决方案
该.SetRange ActiveCell.Range("A1:A550")
代码中的行是相对于由该行确定的范围Range(Selection, Selection.End(xlDown)).Select
- 只是说使用前 550 行。(如果选择的单元格少于 550 个,则会扩展选择以匹配,因此实际上不需要第一行)
也就是说,整个块可以做得更短,在没有任何“无关”代码的情况下做完全相同的事情:
Range(Selection.Cells(1,1), Selection.Cells(550, 1)).Sort Selection, xlAscending, _
Header:=xlNo, Orientation:=xlSortColumns, SortMethod:=xlPinYin
ActiveCell.Offset(0, 1).Select
推荐阅读
- python - 我将如何使用 python 制作一个“安全”的 .exe 文件?
- java - 接口中的默认方法与扩展实用程序类
- tcpdump - Ubuntu 20.04 中 tcpdump 的权限问题
- c# - 如何将 IGroupedObservable 转换为 IGrouping?
- android - 片段未附加到导航组件上的上下文
- firebase - Flutter,使用“立即跳过”按钮跳过通过 Firebase 身份验证登录/注册
- javascript - 登录后反应重定向到另一个页面
- ansible - Ansible jinja 测试列表是否包含有效 IP 地址并生成模板
- vue.js - 如果目标是 Vue3 中的 AsyncComponent,为什么我无法获得 ref?
- java - 我需要帮助编写一个 JAVA 程序,该程序将在获得 10 个整数值输入后打开一个命名文件并计算数字的平均值