[英]How to copy only values in excel vba from a range?
我正在尝试使用 vba 宏在 Excel 中将值从表复制到范围,但我不想要表格格式,只想要它的值。 我怎样才能做到这一点?
以下是部分代码:
'Source range
Set r = Sheets("Sheet1").Range("Table1")
'Destination range
Set dest = Range(.Cells(linhaAtual, 1), .Cells(linhaAtual + r.Rows.Count - 1, 5))
r.Copy Destination:= dest
您可以通过将源范围的值分配给目标范围来完全跳过复制命令:
'Source range
Set r = Sheets("Sheet1").Range("Table1")
'Destination range
Set dest = Range(.Cells(linhaAtual, 1), .Cells(linhaAtual + r.Rows.Count - 1, 5))
dest.Value = r.Value
我相信您正在寻找粘贴值的功能。 你可以记录下来,或者使用我在下面所做的。 (从录制中选择在那里,这会使它运行得更慢,但你没有循环,所以它只是添加恒定的时间)。
Selection.Copy
'Select your destination like range("destination").select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
我假设您想从“Sheet1”复制到“Sheet1”-当然您可以将其设为参数并循环遍历所有工作表
Dim rSource as range 'Source Range
Dim rDest as range 'Target Range - It should be the same dimension
Dim wbSource as workbook 'Source Workbook
Dim wbTarget as workbook 'Target Workbook
Dim myRange as string
myRange = "A:G" ' It is an example, you can make it dynamic
'add new workbook
Workbooks.Add
Set wbTarget = ActiveWorkbook
'Set the Source Range
Set rSource = wbSource.Sheets("Sheet1").Range(myRange)
'Destination Range
Set rDest = wbTarget.Sheets("Sheet1").Range(myRange)
'Copy values only
rSource.Copy
rDest.PasteSpecial xlPasteValues
您需要使用 pastespecial 命令,如下所示。
'Source range
Set r = Sheets("Sheet1").Range("Table1")
'Destination range
Set dest = Range(.Cells(linhaAtual, 1), .Cells(linhaAtual + r.Rows.Count - 1, 5))
r.Copy
dest.pastespecial paste:=xlPasteValues
r.Copy
dest.pastespecial xlPastevalues
我实现了一个可行的解决方案。
下面是代码:
Set r = Sheets("Criteria").Range("CriteriaTable")
Set dest = Range(.Cells(linhaAtual, 1), .Cells(linhaAtual + r.Rows.Count - 1, 5))
Sheets("Criteria").Activate
r.Select
Selection.Copy
Sheets("Load").Activate
dest.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
使用 Range.Value 方法。 就像设置variable a = 1
一样。 您将其视为将 1 复制到 a 的地方。 所以...
Range2.value = Range1.value
或者
Worksheets("historical").Range("A1:F15").Value = Worksheets("actuals").Range("A1:F15").Value
在这里,我将实际工作表中的一些数据复制到一些历史工作表中。 或者,如果您更喜欢将一个范围的值设置为另一个范围。
您可以完全跳过复制命令,如 MP24 所说。在将最后一行从“值”修改为“公式”后,他的建议对我有用,如下所示
设置 r = Sheets("Sheet1").Range("Table1") 设置 dest = Range(.Cells(linhaAtual, 1), .Cells(linhaAtual + r.Rows.Count - 1, 5))
dest.formula = r.formula
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.