簡體   English   中英

VBA-根據包含日期的單元格值復制和粘貼循環

[英]VBA - Copy and paste loop based on cell value containing date

我正在使用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可以在檢查之前將其轉換嗎?

提前致謝。

對於VBA運行時錯誤-如果要對照單元格C3中的值檢查該值,請使用Range方法而不是Cells方法:

If Data.Cells(myRow, 1).value = Sheets("Guide").Range("C3").value Then

為了比較日期,您可以使用CDate將值轉換為日期

If CDate(Data.Cells(myRow, 1).value) = CDate(Sheets("Guide").Range("C3").value) Then

如果要使用Cells方法,則需要以下語法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM