【发布时间】:2020-06-25 14:13:36
【问题描述】:
我正在尝试将一些值从一个工作簿中的列复制到另一个:
工作簿 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
基本上它需要看起来像右边的列。
我试过这个,但它在我的电子表格中添加了不应添加的边框。
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
我宁愿找到一种更简单的方法来粘贴这些值并保持它们的格式,而无需更改单元格格式和字体颜色等。
【问题讨论】:
-
粘贴值 粘贴值。如果您想保留 formatting,您需要粘贴的不仅仅是 values。
-
尝试在手动执行粘贴特殊操作的同时录制宏,看看 Excel 为
PasteSpecial调用提供了哪些参数。 -
粘贴值和格式。查看此帖子:stackoverflow.com/questions/25461314/…