我在电子表格中有许多命名的垂直范围,其中包含名称列表。新名称通常在每个列表的末尾手动添加。显然,这意味着除非手动排序,否则列表不会按字母顺序排列。是否有任何方法(如果需要)通过宏让每个范围在其任何组成单元格被修改后自动排序?这个想法是在给定用户向每个列表/范围添加新名称后立即按字母顺序排序。
我还没有深入研究过 Excel 的 VBA 及其自动排序功能,所以如果答案有点太明显,请原谅我的无知。
答案1
好的,我做到了。按照 Raystafarian 的建议,我处理了事件Worksheet_Change
并使用该Range().Sort
函数对我的列进行排序。每列都有一个标题,我希望它们按字母顺序升序排列,所以这是我的函数:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A2:A100").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
Range("B2:B100").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
Range("C2:C100").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes
Range("D2:D100").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes
Range("E2:E100").Sort Key1:=Range("E1"), Order1:=xlAscending, Header:=xlYes
Range("F2:F100").Sort Key1:=Range("F1"), Order1:=xlAscending, Header:=xlYes
End Sub
这可能不是一个特别优雅或万无一失的解决方案,但它完美地解决了我的问题,经过一点培训,用户就会知道不要修改标题列。
谢谢,Raystafarian!