分享

vba分组

 Excel实用知识 2023-02-28 发布于广东

问题描述

我有一个包含标题行的工作表,我想使用VBA对行进行分组。 我已经尝试过这种语法

Sub GroupItTogether()
  Dim rLastCell As Range
  Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1),  _   
    LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
  Range("A2" & rLastCell).Select
  Selection.Rows.Group
  ActiveSheet.Outline.ShowLevels RowLevels:=1
End Sub

但是,这将产生以下错误:

参考无效或不合格

突出显示代码行: After:=.Cells(1, 1)

我该怎么做才能用VBA对所有行进行分组(没有标题)?

编辑

对于每个注释,我将语法编辑为以下内容,从而消除了该错误,但这并未将所有行分组(不包括标题)。 如何将其更新为按使用范围分组?

  Sub GroupItTogether()
  Dim rLastCell As Range
  Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=Cells(1, 1), _    
    LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
  Range("A2" & rLastCell).Select
  Selection.Rows.Group
  ActiveSheet.Outline.ShowLevels RowLevels:=1
End Sub

1 条回复

1楼
 Shai Rado  1 已采纳  2016-11-18 13:26:55

您无需使用SelectSelection 。 一旦你找到的范围rLastCell ,你可以从你的范围内读取的最后一行财产rLastCell.Row ,然后只需将它们分组。

Option Explicit

Sub GroupItTogether()

Dim rLastCell As Range

Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=Cells(1, 1), _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)

Range("A2:A" & rLastCell.Row).Rows.Group
ActiveSheet.Outline.ShowLevels RowLevels:=1

End Sub

注意 :您可以使用以下命令获取列A中包含数据的最后一行:

lastrow = Cells(Rows.Count, "A").End(xlUp).Row

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多