返回列表 上一主題 發帖

Excel VBA如何 快速取消合併儲存格_空格填入原合併值

Excel VBA如何 快速取消合併儲存格_空格填入原合併值

請教各位前輩
取消合併儲存格後的空格要填入原來合併格的值
1.有選取動作會比較慢
2.要怎樣才能逐格處理時就取得該合併儲存格的位址?
3.什麼辦法可以縮短執行時間

Option Explicit
Sub 取消合併儲存格_空格填入原合併值()
Dim seL As Range, rnG As Range, T, ad$
T = Timer
Set seL = Cells
For Each rnG In seL.SpecialCells(2)
   If rnG.MergeCells = True Then
      rnG.Select   '有這個動作會比較慢
      ad = Selection.Address
      rnG.MergeCells = False
      Range(ad) = Range(ad).Item(1)
   End If
Next
seL.MergeCells = False'補取消  原合併格就無值的除存格
MsgBox "共耗時:" & Timer - T & " 秒"
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

回復 2# n7822123


    謝謝前輩指導
1.測試結果可節省很多時間
2.學習到的重點:Area的概念

對前輩很抱歉! 這週忙一個剛接到的專案,沒能及時測試回應
謝謝您
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 4# 准提部林


    謝謝前輩指導
習得心得如下
1.有些屬性是加了Un就是相反,有些是=True / False,有些屬性兩種都有
2.單一儲存格也視為MergeArea,只是 Count=1
3.巧妙的讓所有格提入了 .Value = xR.Value
4.最近習得方法 練習如下 請前輩再指導

Sub 有註解的合併格_取消合併與複製()
Dim uR As Range, com As Comment
For Each com In ActiveSheet.Comments
   Set uR = com.Parent.MergeArea
   With uR
      If .Count > 1 Then
         .UnMerge
         uR.Item(1).Copy uR
      End If
   End With
Next
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 欣賞別人就是莊嚴自己。
返回列表 上一主題