VBA列表框数据填充:从A15开始的首个空行写入需求
修改VBA代码实现追加写入(不覆盖原有内容)
核心思路
要实现从A15开始的首个空行写入,关键是先定位A列从第15行起的最后一个非空单元格的下一行,以此作为写入起始位置,而非固定从A15开始覆盖。
修改后的代码
Private Sub CommandButton3_Click() Dim lngStartRow As Long Dim lngIndex As Long ' 定位A列从第15行开始的首个空行 If Range("A15").Value = "" Then ' A15本身为空时,直接从A15开始写入 lngStartRow = 15 Else ' 找到A15以下最后一个非空行,下一行作为起始行 lngStartRow = Range("A15").End(xlDown).Row + 1 End If ' 将ListBox2内容追加写入 For lngIndex = 0 To ListBox2.ListCount - 1 Cells(lngStartRow + lngIndex, 1).Value = ListBox2.List(lngIndex) Next Unload Me End Sub
关键逻辑说明
Range("A15").End(xlDown).Row:从A15向下查找,定位到该区域最后一个非空单元格的行号- 空值判断:避免A15本身为空时,
End(xlDown)跳转到表格底部的错误情况 lngStartRow + lngIndex:让ListBox内容从起始空行开始依次向下填充,完全避开原有数据区域
适配特殊场景的优化(可选)
如果A列存在中间空行(比如A15有内容、A16为空、A17有内容),可以改用更精准的全局查找方式:
lngStartRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 ' 确保起始行不早于15行 If lngStartRow < 15 Then lngStartRow = 15
这种方式会直接定位A列整个列的最后非空行,保证从真正的末尾追加数据,同时强制起始行不提前于15行。
内容的提问来源于stack exchange,提问作者dtur0331
相关产品推荐
相关产品推荐

