1

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

4

3 回答 3

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。

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

于 2013-10-14T21:49:26.840 回答
0

你可能想看看这个,并考虑你可以用和 Range.Offset 做什么,所以你可能会得到Range.CurrentRegionRange.Resize

Range("A3").CurrentRegion.Copy

Range.Select此外,除非您希望用户看到正在发生的事情,否则无需使用;而不是(例如) aRange.Select后跟 a Selection.Copy()(复制到剪贴板),您可以只使用 a 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
于 2013-10-14T22:04:30.773 回答
0

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

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

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

于 2015-05-08T01:40:48.920 回答