VBA有助于在动态范围内选择整行

时间:2013-10-14 21:45:02

标签: excel vba excel-vba

大家提前感谢大家。 我有一个数据集。让我们说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中的列表中提取的

3 个答案:

答案 0 :(得分:5)

使用.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。

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

答案 1 :(得分:0)

您可能希望查看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

答案 2 :(得分:0)

我知道这个帖子已经过时了,但我正在寻找类似的东西。我知道我的范围的起始单元格,但行和列的数量将是动态的。使用以下代码对我有用:

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

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