VBA-根据包含日期的单元格值复制和粘贴循环

时间:2018-11-02 12:41:47

标签: vba date copy paste

我正在使用Excel中从PDF提取的数据。我正在尝试创建一个宏,该宏将检查“指南”选项卡中的日期输入,并将具有匹配日期的所有行数据从一张纸复制到另一张纸。

Sub Copy()

Dim lastrow As Long
Dim myRow As Long
Dim myCopyRow As Long
Dim Data As Worksheet
Dim Form As Worksheet

Set Data = Sheets("PDF Data ")
Set Form = Sheets("Formula")

myCopyRow = 2


lastrow = Data.Cells(Data.Rows.Count, "A").End(xlUp).Row

Application.ScreenUpdating = False


With Data
    For myRow = 1 To lastrow
        If Data.Cells(myRow, "A") = Sheets("Guide").Cells(C3) Then
        Data.Cells(myCopyRow, "B") = Form.Cells(myRow, "A")

        myCopyRow = myCopyRow + 1
    End If
Next


End With

Application.ScreenUpdating = True
Application.CutCopyMode = False

End Sub

在调试时,我得到以下信息:

“运行时错误'1004':应用程序定义或对象定义的error2”

一行:

如果Data.Cells(myRow,“ A”)= Sheets(“ Guide”)。Cells(C3)然后

我要比较的数据是日期。 Excel将“指南”上的用户输入日期识别为短日期并将其格式化为短日期,但是,Sheet1上的日期最初被识别为文本字符串,因为它是使用较大的字符串中的公式进行拆分的。我最初以为是这个问题,所以尝试重新格式化时没有运气。

我希望有人可以看一下,让我知道以上代码是否有问题,并确认是否两个单元格都需要识别为日期? VBA可以在检查之前将其转换吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

对于VBA运行时错误-如果要对照单元格0x10000.bin中的值检查该值,请使用C3方法而不是Range方法:

Cells

对于比较日期,您可以使用If Data.Cells(myRow, 1).value = Sheets("Guide").Range("C3").value Then

将值转换为日期

CDate

答案 1 :(得分:0)

如果要使用Cells方法,则需要以下语法:

Worksheets("Guide").Cells(3,"C")