前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA程序:查找并列出指定工作表中所有合并单元格的地址

VBA程序:查找并列出指定工作表中所有合并单元格的地址

作者头像
fanjy
发布2024-03-11 11:11:28
1370
发布2024-03-11 11:11:28
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA

运行下面的VBA过程,将列出当前工作表中所有合并单元格的地址。程序会新建一个工作表并重命名,然后在其中输入所有合并单元格的地址。

详细代码:

代码语言:javascript
复制
Sub FindandListMergedCells()
 Dim LastRow As Long
 Dim LastColumn As Integer
 Dim r As Long
 Dim c As Integer
 Dim counter As Integer
 Dim MySheet As String
 Dim NewSheet As String
 Dim MyAddr As String
 Application.ScreenUpdating = False
 '获取目标工作表数据
 LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.count).Row
 LastColumn = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.count).Column
 MySheet = ActiveSheet.Name
 '检查是否已存在与结果工作表名称相同的工作表
 On Error GoTo SafeToContinue
 Sheets(MySheet & "中的合并单元格").Select
 MsgBox "工作表 " & MySheet & "中的合并单元格" & " 已经存在! 请在运行这个程序前将该工作表删除或重命名."
 On Error GoTo 0
 Exit Sub
 ' 通过错误检查
SafeToContinue:
 ' 初始化打印行计数器
 counter = 2
 '  添加新工作表以保存结果
 Sheets.Add
 ActiveSheet.Name = MySheet & "中的合并单元格"
 NewSheet = ActiveSheet.Name
 Range("A1") = "合并单元格列表"
 ' 返回目标工作表
 Sheets(MySheet).Select
 '查找合并的单元格并将其地址写入新工作表
 For r = 1 To LastRow
   For c = 1 To LastColumn
     Cells(r, c).Select
     MyAddr = Selection.Address
     If Len(WorksheetFunction.Substitute(MyAddr, ":", "")) <> Len(MyAddr) Then
       Sheets(NewSheet).Cells(counter, 1) = MyAddr
       counter = counter + 1
     End If
   Next c
 Next r
 ' 删除重复地址并格式化结果
 Sheets(NewSheet).Select
 ' 将唯一地址复制到列C
 Application.CutCopyMode = False
 If counter > 3 Then
   Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("C1"), _
     unique:=True
   ' 删除列A和列B
   Application.CutCopyMode = False
   Columns("A:B").Select
   Selection.Delete Shift:=xlToLeft
 End If
 ' 格式化新列A
 Range("A1").Select
 With Selection
   .HorizontalAlignment = xlCenter
   .VerticalAlignment = xlCenter
   .Interior.ColorIndex = 35
   .Font.Bold = True
 End With
 With Selection.Borders(xlEdgeLeft)
   .LineStyle = xlContinuous
   .Weight = xlThin
   .ColorIndex = xlAutomatic
 End With
 With Selection.Borders(xlEdgeTop)
   .LineStyle = xlContinuous
   .Weight = xlThin
   .ColorIndex = xlAutomatic
 End With
 With Selection.Borders(xlEdgeBottom)
   .LineStyle = xlContinuous
   .Weight = xlThin
   .ColorIndex = xlAutomatic
 End With
 With Selection.Borders(xlEdgeRight)
   .LineStyle = xlContinuous
   .Weight = xlThin
   .ColorIndex = xlAutomatic
 End With
 Columns("A:A").EntireColumn.AutoFit
 
 ' 以字母顺序排序地址
 Columns("A:A").Select
 Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
   OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
 ' 显示结果
 Range("A1").Select
 On Error GoTo 0
 Application.ScreenUpdating = True
 If counter = 2 Then MsgBox "在工作表" & MySheet & " 中没有找到合并单元格."
End Sub

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档