【发布时间】:2013-06-07 20:36:36
【问题描述】:
'MERGE TITLES
ChartLCN = ActiveSheet.Cells(ActiveCell.Offset(0, 0).Row, ActiveSheet.Columns.Count).End(xlToLeft).Column
For mrgst = 0 To ChartLCN
If ActiveCell.Offset(-1, mrgst) <> "" Then
mrg = mrgst + 1
Do While ActiveCell.Offset(-1, mrg) = ""
Range(Cells(ActiveCell.Offset(-1, mrgst).Row, ActiveCell.Offset(-1, mrgst).Column), Cells(ActiveCell.Offset(-1, mrg).Row, ActiveCell.Offset(-1, mrg).Column)).Merge
mrg = mrg + 1
Loop
End If
Next mrgst
您好,stackoverflow 和 VBA 的新手,我有相当长的 VBA 代码在我添加此代码时崩溃。我试图用这个循环做的是将两个非空单元格之间的空单元格合并到留下非空单元格(对不起,不知道怎么说更好)。
|_ _ _ _ _ |_ _ _ _ _|_ _ => |........|........|...
(.......Connected to left pipe)
我在代码中使用了 do-loops,它们中的大多数都可以正常工作,当它们崩溃时,我只使用了 for-next 循环。我该怎么做才能使这件作品正常工作并避免 excel 出现白屏和崩溃?
感谢您的宝贵时间。
【问题讨论】:
-
嗯,我可以看到,在 For 循环开始后的第一行,您将 Range 对象与字符串进行比较。 Activecell.Offset(-1,mrgst) "" 不起作用。 Activecell.Offset(-1,mrgst).Value "" 会。
-
@rwisch45 - 这不是问题:默认的 Range 属性是
Value,因此您不需要显式添加它。 -
@Tim Williams - 每天学习新东西!
-
如果你是
Do循环“崩溃”`,那是因为你没有正确地为Exit循环提供方法,或者因为你没有考虑到潜在的错误(众所周知,Excel 讨厌工作合并单元格,例如 one),而不是因为Loop中的某些固有的不稳定性。请修改您的问题以说明引发了什么错误,以及代码的哪一行引发了错误(如果有的话):)