Excel 宏从某些单元格复制单元格值,但不从其他单元格复制

Excel 宏从某些单元格复制单元格值,但不从其他单元格复制,excel,vba,Excel,Vba,我一直在尝试制作一个宏,将一些值从一些单元格复制到其他单元格。我有一些代码,它获取表中的下一行,然后复制单元格值并粘贴到表中。然而,这只适用于我希望复制的一半单元格。它复制并粘贴单元格B4和B5中的值,但不复制F5和F7中的值(见下文) 我建议使用PasteSpecial或Destination。下面是一个使用PasteSpecial的示例,它只复制和粘贴值: 'Copy values Worksheets("Calculator").Range("F5").Copy 'Pas

我一直在尝试制作一个宏,将一些值从一些单元格复制到其他单元格。我有一些代码,它获取表中的下一行,然后复制单元格值并粘贴到表中。然而,这只适用于我希望复制的一半单元格。它复制并粘贴单元格B4和B5中的值,但不复制F5和F7中的值(见下文)


我建议使用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