Excel 宏从某些单元格复制单元格值,但不从其他单元格复制
我一直在尝试制作一个宏,将一些值从一些单元格复制到其他单元格。我有一些代码,它获取表中的下一行,然后复制单元格值并粘贴到表中。然而,这只适用于我希望复制的一半单元格。它复制并粘贴单元格B4和B5中的值,但不复制F5和F7中的值(见下文)Excel 宏从某些单元格复制单元格值,但不从其他单元格复制,excel,vba,Excel,Vba,我一直在尝试制作一个宏,将一些值从一些单元格复制到其他单元格。我有一些代码,它获取表中的下一行,然后复制单元格值并粘贴到表中。然而,这只适用于我希望复制的一半单元格。它复制并粘贴单元格B4和B5中的值,但不复制F5和F7中的值(见下文) 我建议使用PasteSpecial或Destination。下面是一个使用PasteSpecial的示例,它只复制和粘贴值: 'Copy values Worksheets("Calculator").Range("F5").Copy 'Pas
我建议使用PasteSpecial或Destination。下面是一个使用PasteSpecial的示例,它只复制和粘贴值:
'Copy values
Worksheets("Calculator").Range("F5").Copy
'Paste Values with PasteSpecial
Worksheets("Trades").Cells(lastRow + 1, 4).PasteSpecial Paste:=xlPasteValues
目的地示例:
'Copy values
Worksheets("Calculator").Range("F5").Copy Destination:=Worksheets("Trades").Cells(lastRow + 1, 4)
希望这有助于解决你的问题。如果没有,请提供有关单元格中值的更多信息。为什么不使用
范围
对象的简单.Value
属性
Worksheets("Trades").Cells(lastRow + 1, 2).Value = Worksheets("Calculator").Range("B4").Value
Worksheets("Trades").Cells(lastRow + 1, 3).Value = Worksheets("Calculator").Range("B5").Value
Worksheets("Trades").Cells(lastRow + 1, 4).Value = Worksheets("Calculator").Range("F5").Value
Worksheets("Trades").Cells(lastRow + 1, 5).Value = Worksheets("Calculator").Range("F7").Value
我想你的问题是你正在复制/粘贴一些公式,这些公式在目标工作表中的结果为零 然后,您可以按照MichałTurczyn的建议(使用
Value
property),使用with…结束于语法来缩短代码
Sub YesTrade()
Worksheets("Trades").Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = Date
With Worksheets("Calculator")
Worksheets("Trades").Cells(Rows.Count, 1).End(xlUp).Offset(, 1).Resize(, 4).Value = Array(.Range("B4"), .Range("B5"), .Range("F5"), .Range("F7"))
End With
End Sub
或者,以(可能)更可读的方式:
Sub YesTrade()
Worksheets("Trades").Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = Date
With Worksheets("Calculator")
Worksheets("Trades").Cells(Rows.Count, 1).End(xlUp).Offset(, 1).Resize(, 4).Value = Array(.Range("B4"), _
.Range("B5"), _
.Range("F5"), _
.Range("F7"))
End With
End Sub
代码没有问题,所以一定是单元格里的内容。F5和F7中的值是否已计算,或者它们与B4和B5的区别如何?如果您只需要从一个位置到另一个位置的值,建议避免使用复制/粘贴,并按如下方式执行:targetRange.value=sourceRange.value
Sub YesTrade()
Worksheets("Trades").Cells(Rows.Count, 1).End(xlUp).Offset(1).Value = Date
With Worksheets("Calculator")
Worksheets("Trades").Cells(Rows.Count, 1).End(xlUp).Offset(, 1).Resize(, 4).Value = Array(.Range("B4"), _
.Range("B5"), _
.Range("F5"), _
.Range("F7"))
End With
End Sub