excel - 循环遍历列中的合并单元格以在 VBA 中获取它们的地址
问题描述
我有一个专栏。说 A 列,它有多个不同范围的合并单元格。
例如,第一个单元格从 A2 合并到 A15,而第二个合并单元格的范围从 A16 到 A115。
我想遍历整个列以获取每个合并单元格的地址。
以下代码仅适用于第一个单元格,但我想遍历 A 列中的所有单元格。
Sub Macro()
Dim rng As Range, rngStart As Range, rngEnd As Range
Set rng = Range("A2")
If rng.MergeCells Then
Set rng = rng.MergeArea
Set rngStart = rng.Cells(1, 1)
Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)
MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address
Else
MsgBox "Not merged area"
End If
End Sub
解决方案
它仅适用于单个单元格的原因是因为您设置rng
为单个单元格。因此,我使用 afor each cell in rng
循环遍历 A 列直到最后一行。
Sub macro()
Dim rng As Range, rngStart As Range, rngEnd As Range, cell As Range
Dim ws As Worksheet
Dim lRow As Long
Dim arr() As String
Set ws = ActiveSheet
With ws
lRow = .Cells(.Rows.Count, 1).End(xlUp).row 'Get the last row in the activesheet
Set rng = .Range("A1:A" & lRow)
End With
For Each cell In rng
If cell.MergeArea.Cells(1, 1).Address = cell.Address Then
If cell.MergeArea.Cells.Count > 1 Then
arr() = Split(cell.MergeArea.Address, ":")
Set rngStart = Range(arr(0))
Set rngEnd = Range(arr(1))
MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address
Else
MsgBox "Not merged area"
End If
End If
Next
End Sub
推荐阅读
- maven - 无法从私有仓库加载 Maven 元数据。收到403:禁止
- android - 需要从 Android onTextChanged 方法中替换特定字符
- android - react-native run-android 构建成功,但不适用于拒绝访问
- java - 注册错误!org.json JSONException java.lang.String 类型的值无法转换为 JSONObject
- html - 对于所有大型桌面分辨率(媒体查询),强制我的 Web 应用程序为 67%
- function - *(*uintptr) 和 **(**uintptr) 有什么区别
- c# - if(File.Exists()) 语句不起作用
- c++ - 在 C++ 中出现字符之间/之后打印所有子字符串
- r - 多个 DataFrame 值
- bash - 修剪 .txt 文件中行的结尾空白