【问题标题】:VBA sorting Range AlphabeticallyVBA按字母顺序排序范围
【发布时间】:2020-09-28 08:31:47
【问题描述】:

所以我有 Columns C tru J 和数据:

姓氏 |名字 |电话...等

我试图在宏的末尾按姓氏字母顺序对整个 C 列进行排序,从 C14 到 C9999

我有这个,尝试了其他代码,但一直收到同样的错误:

Range("C14").CurrentRegion.Sort [C14], xlAscending

所有合并的单元格必须保持相同的大小一直显示,我知道为什么,我已经检查过,但我没有任何合并的单元格!!!

请帮忙。

【问题讨论】:

标签: excel vba sorting


【解决方案1】:

您的Range 对象没有指定工作表。因此 Excel 没有使用您认为它使用的工作表。所以实际上 Excel 会尝试在错误的工作表上进行排序,并且该工作表已经合并了单元格。

切勿在未指定工作表的情况下使用Range

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'specify your name

ws.Range("C14").CurrentRegion.Sort ws.Range("C14"), xlAscending

另外,使用工作表 ws.Range("C14") 的适当参考来代替 [C14]


根据评论编辑:

要仅从 C14 向下排序,请使用:

With ws.Range("C14").CurrentRegion
    .Resize(RowSize:=.Rows.Count - 14 + .Row - 1).Offset(RowOffset:=14 - .Row + 1).Sort ws.Range("C14"), xlAscending
End With

【讨论】:

  • 我在代码的开头有一个“With Sheet8”,这有关系吗?
  • @JavyColón Range("C14") 不使用With 语句,[C14] 也不使用。 With 语句仅在语句以.Range("C14") 之类的点开头时使用。所以.Range("C14").CurrentRegion.Sort .Range("C14"), xlAscending 可以在With Sheet8 之后工作。
  • 好的,我现在遇到的问题是不是从 C14 开始,而是从 C1 开始对所有内容进行排序
  • 因为CurrentRegion很马虎。如果有 C14 以上的数据,它将包含在 ws.Range("C14").CurrentRegion 中,您可以使用 Range("C14").CurrentRegion.Select 检查它,以便查看实际用于 .Sort 的数据。请参阅我编辑的答案以获取解决方案。
猜你喜欢
  • 2015-08-15
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 2011-01-30
  • 2019-04-05
相关资源
最近更新 更多