VBA copy/paste 单元格值的宏 sheet 基于日期的 1 到 2

VBA Macro to copy/paste cell value from sheet 1 to 2 based on date

我在 Sheet 1 中锚定了一个日期和一个值,想在 Sheet 2 的 A 列中查找该日期,然后将 sheet 1 值粘贴到 sheet 2 的列 E.

在sheet1中,我有今天的名字REP_DATE,我要找的日期是昨天的日期,也就是REP_DATE - 1,我有这个公式在sheet1 E5,数值在F5.

这是我从网上得到的代码,我做了一些调整:

Sub CopyData()
Dim myDate As Date
Dim myValue As Variant
myDate = ThisWorkbook.Sheets("Sheet1").Range("E6").Value
myValue = ThisWorkbook.Sheets("Sheet1").Range("F6").Value


ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(myDate).Offset(0, 4).Value = myValue

End Sub

但是,我不断收到错误“运行-time error '91': Object variable or With block variable not set”,调试指的是这行代码ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(myDate).Offset(0, 4).Value = myValue

这让我很困惑,我想知道如何解决这个问题。

谢谢。

您描述了您的 date/value 在第 5 行 (e5, f5) 中,而在您的代码中您正在按第 6 行 (e6, f6) 查找日期。

显示错误,因为找不到日期。

如果您的日期在 Sheet2 中不存在,也会出现同样的错误。

您可以更新代码中的单元格地址。 此外,您可以添加一些错误处理,让用户知道在找不到日期的情况下代码无法正常工作的原因;

Option Explicit

Sub CopyData()
Dim myDate As Date
Dim myValue As Variant
myDate = ThisWorkbook.Sheets("Sheet1").Range("E5").Value
myValue = ThisWorkbook.Sheets("Sheet1").Range("F5").Value

On Error GoTo nodate
ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(myDate).Offset(0, 4).Value = myValue
On Error GoTo 0

Exit Sub

nodate:
    MsgBox ("Date is not found")
End Sub

感谢@Salamander Krajza,我将在这里分享我最新的代码,需要将 sheet2 上的日期从公式更改为值,以便 find 函数发挥其魔力:

Sub CopyData()
Dim myDate As Date
Dim myValue As Variant
myDate = ThisWorkbook.Sheets("Sheet1").Range("E5").Value
myValue = ThisWorkbook.Sheets("Sheet1").Range("F5").Value


On Error GoTo nodate
ThisWorkbook.Sheets("Sheet2").Range("A:A").Find(what:=myDate, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 4) = myValue
On Error GoTo 0

Exit Sub

nodate:
    MsgBox ("Date is not found")
End Sub