简体   繁体   中英

Delete Cell based off another Cell that is a date

Working in Excel VBA. I'm trying to delete a cell, if there is a date in another cell via VBA. Or another way to put it, I'm trying to delete a cell, if another cell has ANYthing in it. (As it's either a date, or not.)

Here's my code - I just don't know how to recognise any date in the cell.

Sub Upload1ClearADP()
Dim LastRow As Long, x As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For x = 2 To LastRow
    If Cells(x, "G").Value = "Date" Then
        Cells(x, "U").ClearContents
    End If
Next x

End Sub

You're currently checking for a string Date , not technically an actual date.

Here's your code written to check if it's a date OR is empty:

Sub Upload1ClearADP()
Dim LastRow As Long, x As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For x = 2 To LastRow
    If IsDate(Cells(x, "G").Value) or Cells(x, "G") <> "" Then
        Cells(x, "U").ClearContents
    End If
Next x

End Sub

Edit: As @Harun24HR points out in the comments, the IsDate() is unnecessary, since you check if the cell is not empty ( <> "" ). I just wanted to put it there to introduce the IsDate() function.

Edit 2: You can also use SpecialCells() to do the clearing in one line:

Sub Upload1ClearADP()
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Dim dataRng As Range
Set dataRng = Range(Cells(2, "G"), Cells(LastRow, "G"))
' Use 14 because it's 14 columns to the right from
' Column G to U
dataRng.SpecialCells(xlCellTypeConstants).Offset(0, 14).ClearContents

' If you have formulas *and* constants in column G, use:
' Union(dataRng.SpecialCells(xlCellTypeConstants), _
'     dataRng.SpecialCells(xlCellTypeFormulas)).Offset(0,14).ClearContents

End Sub

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM