[英]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.