2017-01-18 326 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