Excel VBA宏串联选中列问题:遇整行空单元格即停止运行
解决VBA宏遇空行停止处理的问题
修改后的完整代码
Option Explicit Sub ConcatenateSelectedColumns() Dim ColIndex As Long Dim rngRow As Range Dim Cell As Range Dim ConcatenatedValue As String ' 检查是否选中了单元格区域 If Not TypeName(Selection) = "Range" Then MsgBox "请选择需要串联的列区域。", vbExclamation Exit Sub End If ' 在选中列右侧插入新列 With Selection ColIndex = .Cells(1).Offset(0, .Columns.Count).Column Columns(ColIndex).Insert Cells(1, ColIndex).Value = "NewColumn" ' 遍历选中区域的每一行 For Each rngRow In .Rows ConcatenatedValue = "" ' 仅当行内存在非空单元格时执行串联 If Application.CountA(rngRow) > 0 Then For Each Cell In rngRow.Cells ConcatenatedValue = ConcatenatedValue & Cell.Value Next Cell End If ' 将结果写入新列对应行(空行自动写入空字符串) Cells(rngRow.Row, ColIndex) = ConcatenatedValue Next rngRow End With End Sub
核心修改说明
- 移除了原代码中
If Application.CountA(rngRow) = 0 Then Exit For这一行,这是导致宏遇到空行就终止后续处理的根本原因。 - 调整逻辑:先初始化串联值为空,仅当当前行存在非空单元格时才执行串联操作;空行则直接将空字符串写入新列对应行,确保循环能遍历选中区域的所有行,不会中途退出。
- 保留了原宏的核心功能:选中区域校验、自动插入新列、逐行串联单元格内容。
内容的提问来源于stack exchange,提问作者N G
相关产品推荐
相关产品推荐

