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.CurrentRegion
, Range.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。