VBA帮助selectdynamic范围上的整个行

嗨,感谢大家提前。 我有一个数据集。 可以说A3到Z30。 行数和列数有所不同。 也有空白的一套。 所以,让我说我想select整个部分,但在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 

现在我知道这可能似乎elementry但如何赫克我select所有行,我只是突出显示? 这需要是dynamic的,因为正如我所说的列数和行数有所不同。

哦,如果你能帮我弄清楚下一部分的奖励业力和荣誉。 我需要select范围并将其粘贴在最后一行之后,但是在这种情况下,第一个单元格或A31中的值需要更改,并且正在从表单2

使用.EntireRow方法。

这里是一个例子:

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

如果你想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。

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

  • Excelmacros – 只将非空单元格从一个表格粘贴到另一个表格(堆栈溢出)

你可能想看看这个 ,并考虑你可以用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 

我知道这个线程是旧的,但我正在寻找类似的东西的帮助。 我知道我的范围的起始单元格,但行和列的数量将是dynamic的。 使用下面的代码为我工作:

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

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