[英]Macro to copy merged cell to another merged cell whilst keeping the formatting
在下面的協助下,我目前正在使用
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim src as Range, dest as Range
Dim mergeAddress as String
Set src = Range("C9")
Set dest = Worksheets("FRONT").Range("G7")
mergeAddress = dest.MergeArea.Address
If Not Intersect(Target,src) Is Nothing Then
dest.MergeArea.Cells(1).Value = src.Value
src.Copy
dest.PasteSpecial xlPasteFormats
dest.Parent.Range(mergeAddress).Merge
End If
End Sub
我仍然會丟失此代碼的格式,例如粗體,顏色等。
任何幫助,將不勝感激。 謝謝。
這有點棘手,也許會有所幫助。 合並的細胞是一個痛苦的工作。 在這種情況下,我認為您可以通過以下方法解決問題:
從一個單元格復制到合並區域
這是我測試的示例,其中[A1]的MergeArea由[A1:C3]組成。 本示例假定您要將一個單元格復制到合並的單元格中(例如,“ H1”被復制到“ A1:C3”中)
Sub foo()
Dim src As Range, dest As Range
Dim mergeAddress As String
Set src = [H3]
Set dest = [A1]
'First, put the value in the merged cells:
dest.MergeArea.Cells(1).Value = src.Value = src.Value
'Then, the formatting:
'1. Get the mergeArea.Address
mergeAddress = dest.MergeArea.Address
'2. Copy & paste formatting (this unmerges the cells)
src.Copy
dest.PasteSpecial (xlPasteFormats)
'3. Re-merge the cells:
Range(mergeAddress).Merge
End Sub
更新代碼:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim src as Range, dest as Range
Dim mergeAddress as String
Set src = Range("C9")
Set dest = Worksheets("FRONT").Range("G7")
mergeAddress = dest.MergeArea.Address
If Not Intersect(Target,src) Is Nothing Then
dest.MergeArea.Cells(1).Value = src.Value
src.Copy
dest.PasteSpecial xlPasteFormats
dest.Parent.Range(mergeAddress).Merge
End If
End Sub
從合並區域復制(完整副本)
從合並的單元格復制要容易一些,您可以執行以下操作,以復制整個合並的區域,然后粘貼到目標位置:
src.MergeArea.Copy dest
我找到了解決方案:
第一:編寫代碼以在合並的單元格中選擇一個單元格(它應選擇整個合並的單元格)
第二:編寫代碼以復制選定的單元格。
示例:我有連續一周中的每一天的電子表格,但一周中的每一天都與“ A”和“ B”列合並。 下面的代碼將選擇並復制所有數據,包括其余合並的單元格。
Range(Cells.Find("Monday").Address, Cells.Find("Sunday").Address).Select
Selection.copy
要粘貼數據,請遵循以下步驟:
Range("A30").PasteSpecial xlPasteAll
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.