【发布时间】:2015-03-27 12:28:01
【问题描述】:
我在 Excel (2010) 中有一个可刷新的报告。单元格 S3 包含一个唯一的 8 位数字,每次刷新报告时都会有所不同。第 1 行和第 2 行只是标题和其他信息;实际数据在第 3 行向下返回
我希望能够让报告自动从第 3 行向下按 F 列从 A-Z 排序任何数据(当然还有所有相邻数据及其各自的行,如果这有意义的话)如果单元格 S3 的内容曾经更改过。
这在 VBA 中可行吗?
非常感谢。
【问题讨论】:
我在 Excel (2010) 中有一个可刷新的报告。单元格 S3 包含一个唯一的 8 位数字,每次刷新报告时都会有所不同。第 1 行和第 2 行只是标题和其他信息;实际数据在第 3 行向下返回
我希望能够让报告自动从第 3 行向下按 F 列从 A-Z 排序任何数据(当然还有所有相邻数据及其各自的行,如果这有意义的话)如果单元格 S3 的内容曾经更改过。
这在 VBA 中可行吗?
非常感谢。
【问题讨论】:
您可以像这样使用Worksheet_Change 事件:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 19 And Target.Row = 3 Then
Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A3:F" & lastrow).Sort key1:=Range("F3:F" & lastrow), _
order1:=xlAscending, Header:=xlNo
End If
End Sub
有关排序,请参阅here。 然而:
在重新计算期间单元格发生变化时不会发生此事件。 使用Calculate 事件来捕获工作表重新计算。
如果您需要检查重新计算引起的值变化,您必须将 S3 单元的旧值存储在一个变量中,并将这个旧值与新值进行比较。见this answer。
【讨论】: