【问题标题】:VBA help in selecting entire rows on a dynamic rangeVBA 帮助在动态范围内选择整行
【发布时间】:2013-10-14 21:45:01
【问题描述】:

您好,提前感谢大家。 我有一个数据集。让我们说 A3 到 Z30。行数和列数各不相同。套装中也有空白。所以可以说我想选择整个部分,但在 Z29 和 X30 中使用

Range("A3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy

不会工作。

但 A 列中的值是连续的。所以我认为第一部分会起作用

Range("A3").Select
    Range(Selection, Selection.End(xlDown)).Select

现在我知道这可能看起来很简单,但是我到底要如何选择我刚刚突出显示的所有行?这需要是动态的,因为正如我所说,列数和行数会有所不同。

如果你能帮助我弄清楚下一部分,那么还有额外的业力和荣誉。我需要选择范围并将其粘贴在最后一行之后,但在这种情况下,第一个单元格或 A31 中的值需要更改,并且是从 sheet2 中的列表中提取的

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    使用.EntireRow 方法。

    这是一个例子:

    Dim report as Worksheet
    Set report = Excel.ActiveSheet
    
    report.cells(1,1).EntireRow.Select
    

    如果要选择单元格本身,可以使用.UsedRange 方法。

    这是一个例子:

    Dim report As Worksheet
    Set report = Excel.ActiveSheet
    
    report.Range(report.Cells(1, 1), report.Cells(1, report.UsedRange.Columns.Count)).Select
    

    编辑

    这是您问题第二部分的示例(根据要求):

    Sub test2()
    
    Dim report As Worksheet
    Set report = Excel.ActiveSheet
    
    report.Cells(1, 1).EntireRow.Copy
    report.Cells(report.UsedRange.Rows.Count + 1, 1).EntireRow.PasteSpecial xlPasteAll
    
    
    End Sub
    

    请务必注意.UsedRange 方法还包括没有值但已由用户格式化的单元格;例如,如果您将粗体字体(即使您不添加文本本身)添加到第 1000 行的单元格中,您的 .UsedRange.Rows.Count 将是 1000。

    此外,您可以在以下链接中查看我的答案以获得更多指导。有人告诉我这些笔记对初学者很有帮助:

    【讨论】:

    • 哥们,你太棒了。这完全奏效了。不走运,你能帮助第二部分吗?
    • @Lopside: Dng 它...太快了
    • @JamesChen 不客气,詹姆斯。不要忘记将答案标记为“正确”,祝你好运
    • 我早些时候尝试过,但你回答得太快了,我不得不等待。我开了个会很抱歉。它现在标记好先生
    【解决方案2】:

    您可能想查看this,并考虑使用Range.CurrentRegionRange.Resize 和 Range.Offset 可以做什么,因此您可能会得到:

    Range("A3").CurrentRegion.Copy
    

    此外,没有必要使用Range.Select,除非您希望用户看到正在发生的事情;而不是(例如)Range.Select 后跟 Selection.Copy()(复制到剪贴板),您可以只使用 Range.Copy(Range),直接复制到目标范围。

    至于第二部分,你可以:

    Dim CopyRow as Long
    CopyRow = Range("A3").CurrentRegion.Rows.Count
    Range("A3").CurrentRegion.Copy(Range("A3").CurrentRegion.Offset(CopyRow))
    Range("A3").Offset(CopyRow) = x   ' Insert your reference to the Sheet 2 value here
    

    【讨论】:

      【解决方案3】:

      我知道这个帖子很旧,但是我正在寻求类似的帮助。我知道我的范围的起始单元格,但行数和列数将是动态的。使用以下代码对我有用:

      Range("A2").Select
      Range(Selection, Selection.End(xlDown).End(xlToRight)).Select
      

      希望未来任何人都可以使用这个简单的解决方案。

      【讨论】:

        猜你喜欢
        • 2020-03-06
        • 2021-04-29
        • 1970-01-01
        • 1970-01-01
        • 2014-03-04
        • 2021-05-12
        • 2014-08-03
        • 2015-09-14
        • 2012-08-17
        相关资源
        最近更新 更多