vba粘贴值并保持源格式?

时间:2017-01-18 17:24:49

标签: excel vba format

我正在尝试将一个工作簿中的列复制并粘贴到另一个工作簿中:

练习册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中的第I列。然后我得到如下结果:

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 字体:Calibri

基本上它需要看起来像右边的列。

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 :(得分:4)

这是一个PasteSpecial选项:

checkout({ dispatch: function(){} })

答案 1 :(得分:0)

而不是仅尝试一次