Excel 循环遍历列中的合并单元格,以获取它们在VBA中的地址
我有一个专栏。比如A列,它有多个不同范围的合并单元格 例如,第一个单元格从A2合并到A15,而第二个合并单元格从A16合并到A115 我想遍历整个列以获得每个合并单元格的地址 下面的代码只对第一个单元格有效,但我想循环遍历A列中的所有单元格Excel 循环遍历列中的合并单元格,以获取它们在VBA中的地址,excel,vba,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
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 As范围
Dim rngStart As范围
调光范围
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
端接头
这是适用于单个单元格的代码之所以只适用于单个单元格,是因为您将rng设置为单个单元格。因此,我对rng中的每个单元格都使用了a来循环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
欢迎来到SO。最好粘贴您已经编写的代码。请在问题中包含您正在使用的代码,以便获得帮助。欢迎使用SO,您应该使用此代码编辑您的问题,而不是发布,因为应答代码通过循环贯穿整个列,但问题是它不会进入下一个合并单元格,而是进入下一个单元格,例如我的第一个单元格,即A1,是单非合并单元格。我的下一个单元格是从A2:A10合并而来的,后面的合并单元格是从A11:A29合并而来的,所以当代码运行时,它会跳过A1,因为它是单个单元格。对于即将到来的单元格,A2-它现在正确显示了地址,理想情况下,它应该直接移动到A11,但它没有移动到A3,它显示与A2相同的地址,并重复相同的地址,直到到达A10。您可以用代码修复此问题吗?我已编辑了答案,请尝试,如果有任何其他错误,请告诉我。