【发布时间】:2016-01-14 09:47:27
【问题描述】:
我正在尝试制作一个宏,该宏将一次在电子表格中滚动一整行,如果有数据,则合并活动行中的所有单元格。它应该这样做直到最后一行。
代码当前将所有行都视为空行,因此会跳过它们,我需要一个 if 条件或 do until 语句来帮助检测和跳过空行,检测包含数据的行并合并它们的单元格,并在到达最后一个时完全停止行。
我当前的代码:
Sub merge()
Dim LastRow As Long, i As Long
Sheets("Body").Activate
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Rows("1:1").Select
For i = 1 To LastRow
If Range("A" & i).Value = "*" Then
Selection.merge = True
Selection.Offset(1).Select
Else
Selection.Offset(1).Select
End If
Next i
End Sub
我也试过了:
sub merge2()
Dim LastRow As Long, i As Long
Sheets("Body").Activate
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Rows("1:1").Select
Do Until ActiveCell.EntireRow > LastRow
'this line below was a concept
If ActiveCell.EntireRow & ActiveCell.Column.Value = "*" Then
Selection.merge = True
Selection.Offset(1).Select
Else
Selection.Offset(1).Select
End If
Loop
End Sub
【问题讨论】:
-
你有什么问题?
-
对不起!代码当前将所有行视为空行,因此跳过它们,我需要一个 if 条件或 do until 语句,这将有助于检测和跳过空行,检测包含数据的行并合并它们的单元格,并在到达最后一行时完全停止。
-
另外使用
select语句通常是危险的,应尽可能避免。它也只会减慢您的代码速度。你还想合并整行吗? -
如果您有其他建议,我很乐意使用它。是的,如果所选行有数据,则该行的单元格应该合并。
-
我稍微改变了你的不使用 select 语句。但是,它未经测试。为什么要合并整行?我很确定这只会导致 Excel 出现问题