合并仅用变量引用的连续单元格

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

【讨论】:

以上是关于合并仅用变量引用的连续单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用VBA在excel公式中增加包含单元格引用的变量

Excel使用宏批量向单元格插入指定信息

excel vba中变量单元格地址在range怎么用?

如何快速搜索出excel工作表中哪些单元格链接到其他数据源?

EXCEL中OFFSET函数在合并单元格中怎么用?

vba编程 变量赋值单元格