我正在尝试对两个日期(在不同列中)和当前年份日期之间进行比较。如果年份相同,那么它应该在第13栏的相应行写上“ATUAL”字样,如果年份不同则应该什么都不写。
这是我到目前为止所尝试过的。
Sub CopyColumn2()
Dim i As Long
Dim j As Long
Dim lastrow As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim wbk As Workbook
Dim wb As Worksheet
Set wbk = Workbooks.Open("I:\CGP\DEOPEX\01 - Supervisão\01 - Administrativo\06- ADM - Taís e Natalia\Férias - Aprovadas\FÉRIAS TÉCNICOS EXTERNAS.xlsx")
Set ws1 = ThisWorkbook.Sheets("BASE_TOTAL")
Set ws2 = wbk.Worksheets("FUNCIONÁRIOS")
lastrow = ws2.Range("A" & Rows.Count).End(xlUp).Row
For j = 2 To lastrow
If Year(ws1.Cells(j, 9)) = Year(Date) Or Year(ws1.Cells(j, 12)) = Year(Date) Then
ws1.Cells(j, 13) = "ATUAL"
Else
ws1.Cells(j, 13) = ""
End If
Next j
End Sub
日期放在第I列和第L列中,所有列都设置为日期。我的Excel是葡萄牙语,所以我的日期格式是dd / mm / yyyy。
当我运行我的代码时,收到此消息:
运行时错误13:输入不匹配
这部分突出显示:
If Year(ws1.Cells(j, 9)) = Year(Date) Or Year(ws1.Cells(j, 12)) = Year(Date) Then
有谁知道这里有什么问题?它应该可以工作,因为我的所有日期都以相同的方式格式化。
答案 0 :(得分:1)
试试这个:
Dim date1 As Date, date2 As Date
设置变量
的值 date1 = ws1.Cells(j, 9)
date2 = ws1.Cells(j, 12)
在If
声明中使用变量
If Year(date1) = Year(Date) Or Year(date2) = Year(Date) Then