2017-01-18 514 views
2

我試圖從列在一個工作簿複製和粘貼一些值到另一個:vba粘貼值並保持源格式?

工作簿1

Column A 
10/02/1990 
41 
11/01/2017 
52 

練習冊2

Column I 
10/02/1990 
41 
11/01/2017 
52 

我得到的問題是,如果我只需從工作簿A中的第1列複製我的值,然後將它們粘貼到工作簿2中的第一列。然後我得到如下結果:

Column I 
34331 
41 
121092 
52 

這是因爲格式不知何故被excel迷失/困惑。

所以我創建了一個按鈕,用戶可以使用VBA像這樣粘貼此數據:

Sub Paste3() 
Dim lastRow As Long 
On Error GoTo ErrorHandler 

lastRow = ActiveSheet.Range("H" & Rows.Count).End(xlUp).Row 
ActiveSheet.Range("H10").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False 

Exit Sub 

ErrorHandler: 
MsgBox "Please Copy Values First." 
End Sub 

這工作和值保持其格式。但是,單元格格式也會改變。

我的意思是,工作簿1上的單元格有黑色邊框,字體也是黑色和粗體。

我想嘗試保留工作簿2的字體和單元格邊框。這就是:

灰色的邊框,RGB(191,191,191) 灰色字體(RGB 128,128,128) 字體大小:11 字體:宋體

本質上,它需要像列在右邊。

enter image description here

我已經試過這一點,但它不工作的權利,它增加了邊界,範圍在我的電子表格它是不應該。

Sub Paste3() 
Dim lastRow As Long 
On Error GoTo ErrorHandler 

lastRow = ActiveSheet.Range("H" & Rows.Count).End(xlUp).Row 
ActiveSheet.Range("H10").PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False 

Dim rng As Range 
Set rng = Range("H10:H" & lastRow) 
With rng.Borders 
     .LineStyle = xlContinuous 
     .Color = RGB(191, 191, 191) 
     .Weight = xlThin 
     .Font 
End With 

With rng.Font 
       .TextColor = RGB(128, 128, 128) 
       .Font.Name = "Calibri" 
       .Size = 11 
       .Bold = False 
      End With 
Exit Sub 

ErrorHandler: 
MsgBox "Please Copy Values First." 
End Sub 

說實話,我寧願只是找到粘貼這些值,並保持它們的格式不改變單元格的格式和字體顏色等更簡單的方法

請能有人告訴我在哪裏,我錯了?

+2

*粘貼值*膏,那麼,* *的值。如果你想保持*格式*,你需要粘貼的不僅僅是*值*。 –

+0

在手動執行粘貼特殊操作時嘗試錄製宏,並查看爲「PasteSpecial」調用提供的Excel參數。 –

+0

粘貼值和格式。檢查這篇文章:http://stackoverflow.com/questions/25461314/vba-copy-cells-value-and-format – tlemaster

回答

3

有此一PasteSpecial的選項:

ActiveSheet.Range("H10").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _ 
       Operation:= xlNone, SkipBlanks:=False, Transpose:=False