You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 08:14:51