合并仅用变量引用的连续单元格
Posted
技术标签:
【中文标题】合并仅用变量引用的连续单元格【英文标题】:Merge consecutive cells referenced with variables only 【发布时间】:2021-11-21 12:49:36 【问题描述】:我想在 VBA 宏/模块中合并一行的 4 个连续单元格。但是,我只允许使用引用起始单元格和/或任何其他单元格的变量(当然,只有需要合并的单元格才是重要的——在任何阶段,我不喜欢使用单元格地址因为它最终要在 Do-While 循环中使用)。
我尝试了多种方法,但都没有返回所需的合并。这是我尝试过的(注意- D 是我引用的单元格的变量)
Range(D, D.Offset(0, 1)).merge
Range(D & D.Offset(0, 2)).merge
Range(D & D.Offset(0, 3)).merge
这个不返回错误,但只合并两个连续的单元格。另一方面,以下一个,我在多个站点上发现它是一个解决方案,但它返回“运行时错误:1004 对象'_Global'的方法'范围'失败”,导致没有合并并且循环过早结束。
Set E= D.Offset(0,3)
Range(D & ":" & E).merge
D 已正确设置和定义,因为循环使用注释掉的合并命令。最近才开始用 VBA 编码,任何帮助都会很棒!
【问题讨论】:
【参考方案1】:有很多方法可以做到,我建议使用Range.Resize
方法。
假设D
拥有正确的单元格(顺便说一句,您应该考虑使用更好的名称),只需使用
D.Resize(1, 4).Merge
Resize
-方法将返回一个具有 1 行高和 4 个单元格宽度的范围,Merge
将简单地合并所有单元格。
尝试使用第二个范围变量来保存最后一个单元格也是有效的,但是您使用了错误的语法。要从开始和结束单元格创建范围,请将两个单元格作为参数传递。
Set E = D.Offset(0, 3)
Range(D, E).Merge
' Same could be done with one line:
Range(D, D.Offset(0, 3)).Merge
【讨论】:
以上是关于合并仅用变量引用的连续单元格的主要内容,如果未能解决你的问题,请参考以下文章