cxgrid 行合并单元格_【Excel VBA】如何批量撤销合并单元格?
周末好,之前我們分享了批量合并單元格的VBA小代碼,鏈接參考:
【Excel VBA】如何批量合并相同值單元格?
天下大勢合久必分、分久必合、分分合合合合分分又合合合再分分分又又合合合合合合合…………
今天我們分享的小代碼就是如何批量撤銷合并單元格……
端上動畫示意圖:
代碼如下:
Sub unMergeRng() '撤銷合并單元格
??? Dim rngUser As Range
??? Dim rngMerge As Range
??? Dim lngRowFirst As Long
??? Dim lngRowEnd As Long
??? Dim lngClnFirst As Long
??? Dim lngColEnd As Long
??? Dim lngRowMerge As Long
??? Dim i As Long
??? Dim j As Long
??? Dim rngSelect As Range
??? On Error Resume Next
??? Set rngSelect = Selection
??? '用戶初始選擇的單元格
??? Set rngUser = Application.InputBox("請選擇需要撤銷合并的單元格區域!", Default:=rngSelect.Address, Type:=8)
??? '用戶選擇需要撤銷合并的單元格區域
??? Set rngUser = Intersect(rngUser.Parent.UsedRange, rngUser)
??? 'Intersect避免用戶選擇整列等單元格范圍時,程序運算數據虛大,運算效率低下
??? If rngUser Is Nothing Then MsgBox "選擇的單元格區域不能為空白": Exit Sub
??? lngRowFirst = rngUser.Row
??? '運算范圍的初始行
??? lngRowEnd = lngRowFirst + rngUser.Rows.Count - 1
??? '運算范圍的結束行
??? lngClnFirst = rngUser.Column
??? '運算范圍的開始列
??? lngColEnd = lngClnFirst + rngUser.Columns.Count - 1
??? '運算范圍的結束列
??? Application.ScreenUpdating = False
??? For i = lngRowFirst To lngRowEnd
??? '遍歷行
??????? For j = lngClnFirst To lngColEnd
??????? '遍歷列
??????????? lngRowMerge = Cells(i, j).MergeArea.Rows.Count
??????????? '合并單元格的行數
??????????? If lngRowMerge > 1 Then
??????????????? With Cells(i, j).Resize(lngRowMerge, 1)
??????????????????? .Select
??????????????????? .UnMerge
??????????????????? '撤銷合并
??????????????????? .Value = Cells(i, j)
??????????????????? '填充數據
??????????????? End With
??????????? End If
??????? Next
??????? i = i + lngRowMerge - 1
??????? '跳過已處理完的合并行
??? Next
??? rngSelect.Select
??? Application.ScreenUpdating = True
End Sub
專業的職場技能充電站
總結
以上是生活随笔為你收集整理的cxgrid 行合并单元格_【Excel VBA】如何批量撤销合并单元格?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kali2020进入单模式_2021神途
- 下一篇: etcd 启动分析_Kubernetes