我一直在尝试制作一个宏,该宏将某些值从某些单元格复制到其他单元格。我有一些代码可以获取表中的下一行,然后将其复制单元格值并将其粘贴到表中。但是,这仅适用于我要复制的单元格的一半。它会复制并粘贴单元格B4和B5中的值,但不会粘贴F5和F7(请参见下文)
Sub YesTrade()
Dim lastRow As Long
Dim currentDate As String
currentDate = Date
lastRow = Worksheets("Trades").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Trades").Cells(lastRow + 1, 1).Value = Date
Worksheets("Calculator").Range("B4").Copy Worksheets("Trades").Cells(lastRow + 1, 2)
Worksheets("Calculator").Range("B5").Copy Worksheets("Trades").Cells(lastRow + 1, 3)
Worksheets("Calculator").Range("F5").Copy Worksheets("Trades").Cells(lastRow + 1, 4)
Worksheets("Calculator").Range("F7").Copy Worksheets("Trades").Cells(lastRow + 1, 5)
End Sub
答案 0 :(得分:1)
为什么不使用.Value
对象的简单Range
属性?
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
答案 1 :(得分:0)
我建议使用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)
希望这可以帮助您解决问题。如果没有,请提供有关单元格中值的更多信息。
答案 2 :(得分:0)
我想您的问题是您正在复制/粘贴一些在目标表中会产生零的公式
然后您可以遵循MichałTurczyn的建议(使用Value
属性),并使用With ...End 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