我正在尝试将数据从工作表(“Billing”)保存到另一个工作表(“Bill_Register”),格式和值不是公式。 Pasteformats和pastevalues不是单独工作。请建议我一个更好的VBA。提前致谢。
player_name
答案 0 :(得分:1)
如果已合并单元格并使用xlPasteValues,则会发生错误。 使用变体数组。
Sub Save_invoice()
Dim i As Integer
Dim last As Long
Dim rng As Range, rng2 As Range
Dim vDB
last = Sheets("Bill_Register").Range("A100000").End(xlUp).Row
Set rng = Sheets("Billing").Range("A1:J42")
vDB = rng '<~~ set array
Set rng2 = Sheets("Bill_Register").Range("A" & last + 2)
rng.Copy
rng2.PasteSpecial Paste:=xlPasteFormats
rng2.Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB '<~~ get value
End Sub
答案 1 :(得分:0)
如果rng
和rng2
具有完全相同的大小(行和列),那么您可以使用它来获取值:
rng2.Cells.Value = rng.Cells.Value
一些MCVE:
Public Sub TestMe()
Dim rng As Range
Dim rng2 As Range
Set rng = Range("A1:B2")
Set rng2 = Range("D2:E3")
rng2.Cells.Value = rng.Cells.Value
End Sub
答案 2 :(得分:0)
如果您对数字格式等感兴趣,但不一定是填充颜色等,那么您可以使用:
Rng.Copy
rng2.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
答案 3 :(得分:0)
没有理由复制两次,一旦它在剪贴板中,它就在那里直到被替换。
首先粘贴值,然后粘贴格式:
Sub Save_invoice()
Dim i As Integer
Dim last As Long
Dim rng As Range, rng2 As Range
last = Sheets("Bill_Register").Range("A100000").End(xlUp).Row
Set rng = Sheets("Billing").Range("A1:J42")
Set rng2 = Sheets("Bill_Register").Range("A" & last + 2)
rng.Copy
rng2.PasteSpecial Paste:=xlPasteValues
rng2.PasteSpecial Paste:=xlPasteFormats
End Sub