使用 VBA 在 Excel 中处理合并和居中单元格
Posted
技术标签:
【中文标题】使用 VBA 在 Excel 中处理合并和居中单元格【英文标题】:Working with merge and center cells in Excel using VBA 【发布时间】:2014-03-07 18:11:09 【问题描述】:如果我在 excel 中对合并和居中单元格进行范围处理,它们中的每一个是作为单个单元格还是作为构成它们的单元格组来处理的?例如,如果单元格 A1 到 A10 被合并,我做了一个
Worksheets(1).Range("A5")
这将返回构成合并单元格的单个单元格的范围还是包含合并单元格本身的范围?如果我得到它的价值,它会包含什么价值?
换句话说,您将如何在 Excel VBA 中表示合并单元格的范围?
另外,我怎样才能得到与这个合并单元格的长度相邻的非合并单元格的范围?
【问题讨论】:
In other words, how would you represent range over merged cells in excel VBA?
用左上角的单元格寻址。例如:在这种情况下为“A1”。
这意味着每个合并的单元格都将由构成它的第一个单元格来处理?
是的 :) 尝试Worksheets(1).Range("A5").Value = "Blah Blah"
然后Worksheets(1).Range("A1").Value = "Blah Blah"
【参考方案1】:
换句话说,您将如何在 Excel VBA 中表示合并单元格的范围?
通过使用左上角的单元格对其进行寻址。例如:在这种情况下为“A1”。
如有疑问,请先自行检查。如果仍有疑问,请搜索谷歌或您使用的任何搜索引擎。不过,如果有什么不清楚的地方,请询问:)
这将返回构成合并单元格的单个单元格的范围还是包含合并单元格本身的范围?如果我得到它的价值,它会包含什么价值?
它将返回一个单元格A5
,其中没有任何内容,因为当您合并单元格时,左上角单元格中的数据将被保留并被丢弃。我说丢弃的原因是,如果您现在取消合并单元格,您将无法恢复您的值。
最好的检查方法:
假设A1
到A10
有1,2,3..10
。合并它们。单元格现在将只有 1
在即时窗口中试试这个
?Range("A5").Value
你将一无所获。同样,如果你想写信,你不能使用Range("A5").Value = "Blah"
。您必须使用左上角的单元格来解决它。例如
Range("A1").Value = "Blah"
【讨论】:
因此,如果我在 A 列上有一个范围,并且它由合并的单元格组成,并且我在该范围内执行For Each cell
,它会解决合并区域内的单元格还是会跳过到该区域外的下一个单元格?
它将处理合并区域内的单元格。试一试并调试。打印每个单元格的地址。
您可以按照此答案顶部的建议进行操作。这肯定会回答这个问题和许多其他问题。
@sancho.s:我在编辑中准确地输入了这个:D 虽然不同的变体但意思是一样的 :)
那我怎么知道一个单元格是否属于一个合并区域呢?以上是关于使用 VBA 在 Excel 中处理合并和居中单元格的主要内容,如果未能解决你的问题,请参考以下文章
在EXCEL中把上下两单元格合并了,怎样才能使文字上下居中呢?