Excel VBA - 如何选择范围向下到第一个空白单元格

Posted

技术标签:

【中文标题】Excel VBA - 如何选择范围向下到第一个空白单元格【英文标题】:Excel VBA - How to select Range down to first blank cell 【发布时间】:2017-07-26 12:18:32 【问题描述】:

我正在努力为 Excel 上的宏编写代码。非常感谢任何帮助:)

目前我的代码在“Leaves Records”中选择范围 C6:C10 并在“Old Records”中的 B2 处插入,将所有单元格向下移动。我想做完全相同的事情,但我不想复制 C6:C10,而是想将“离开记录”中的所有单元格从 B2 复制到 B 列中的第一个空白单元格。

这是我的代码(复制 C6:C10):

Sub CopyToFirstBlankCell()
Dim bookingWS As Worksheet, mainWS As Worksheet
Dim copyRng As Range

Set bookingWS = Sheets("Leaves Records")
Set mainWS = Sheets("Old Records")
Set copyRng = bookingWS.Range("C6:C10")

mainWS.Range("B2:B" & copyRng.Rows.Count + 1).Insert Shift:=xlDown
copyRng.Copy mainWS.Range("B2")
End Sub

谢谢!

【问题讨论】:

Leave Records的其他单元格中是否有信息? 是的,我需要它来仅选择和复制 B 列,从 B2 向下到第一个空白单元格(不包括空白单元格)。 @paulinhax 【参考方案1】:

如果我理解正确,你可以试试这样的:

Sub CopyToFirstBlankCell()
Dim bookingWS As Worksheet, mainWS As Worksheet
Dim copyRng As Range
Dim lastrow As Long

Set bookingWS = Sheets("Leaves Records")
Set mainWS = Sheets("Old Records")

lastrow = bookingWS.Cells(Rows.Count, "B").End(xlUp).Row

Set copyRng = bookingWS.Range("B2:B" & lastrow)

mainWS.Range("B2:B" & copyRng.Rows.Count + 1).Insert Shift:=xlDown
copyRng.Copy mainWS.Range("B2")
End Sub

【讨论】:

完美!谢谢:)【参考方案2】:

这是复制单元格直到出现空单元格的简单代码:)

Dim i As Integer
i = 2
Do While Not IsEmpty(Sheets("Leaves Records").Cells(i, 2)) 'it'll iterate through B column
    Sheets("Old Records").Cells(i, 2).Value = Sheets("Leaves Records").Cells(i, 2).Value
    i = i + 1
Loop

【讨论】:

以上是关于Excel VBA - 如何选择范围向下到第一个空白单元格的主要内容,如果未能解决你的问题,请参考以下文章

Excel vba - 范围变化时如何复制/粘贴

Excel VBA行中的第一个非空单元格

如何使用 VBA 在 Excel 宏中删除具有两列的重复项?

Excel VBA循环

Excel VBA 更新图表系列

Excel vba 仅自动填充空单元格