私は2つの日付(異なる列)と現在の年の日付の間の比較を試みています。年が同じ場合は、列13の対応する行に「ATUAL」という単語を書き込む必要があります。年が異なる場合は、何も書き込む必要はありません。excel:vba型の不一致比較の日付
これはこれまで私が試したことです。
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
は誰ですここで何が問題なのか知っていますか?私のすべての日付は同じ方法でフォーマットされているので、うまくいくはずです。
エラーが発生した行を確認しましたか? –
1)あなたのコードを1行ずつ上に移動し、エラーの発生場所を確認します。 2)あなたの日付はすべて同じ形式で書式設定されていますが、テキスト形式またはExcel形式の形式ですか?それらをすべて同じようにフォーマットしても、テキストとしてはすべてあなたの数式であなたを助けるつもりはありません。正しい形式で日付を付けることが重要です。必要な形式に変換するには、まず手順が必要です。 –
@EganWolfはい、質問を編集しました。 – paulinhax