从vba中的单元格地址获取excel的合并单元格的值

135*_*355 24 excel merge vba cell

如何在vba中获取具有范围地址的excel的合并单元格的值,例如"$ B $ 4:$ B $ 11"

JMa*_*Max 37

即使真的不鼓励在Excel中使用合并单元格(Center Across Selection例如在需要时使用),"包含"该值的单元格是左上角的单元格(至少,这是表达它的方式).

因此,您可以通过B4:B11多种方式获取范围内合并单元格的值:

  • Range("B4").Value
  • Range("B4:B11").Cells(1).Value
  • Range("B4:B11").Cells(1,1).Value

您还可以注意到所有其他单元格中没有任何值.在调试时,您可以看到值是empty.

另请注意,这Range("B4:B11").Value将无效(如果尝试,Debug.Print则会引发执行错误号13 ),因为它返回一个数组.

  • 当我不知道合并区域的边界时,我得到`Range("B6")的值.MergeArea.Cells(1,1).Value` (62认同)
  • 另外:`范围("B4:B11").项目(1).Value`,或简称,"范围("B4:B11")(1).Value` (3认同)

小智 28

Josh Brown(评论中)给出了我认为最好的答案:

当我不知道合并区域的边界时,我得到了值

Range("B6").MergeArea.Cells(1,1).Value
Run Code Online (Sandbox Code Playgroud)

例如,当您循环浏览可能已合并未知范围的单元格的文件时,这在VBA中很有用,因此您可以使用此方法更加通用.谢谢Josh!