如何使用VBA在excel中使用格式和值保存数据?

时间:2018-06-18 15:29:01

标签: excel excel-vba paste vba

我正在尝试将数据从工作表(“Billing”)保存到另一个工作表(“Bill_Register”),格式和值不是公式。 Pasteformats和pastevalues不是单独工作。请建议我一个更好的VBA。提前致谢。enter image description here

player_name

4 个答案:

答案 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)

如果rngrng2具有完全相同的大小(行和列),那么您可以使用它来获取值:

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