时间:2017-09-05 14:02:08

标签: excel-vba date find vba excel

我有一列日期格式为MM / DD / YYYY,并希望突出显示这些日期的具体范围。例如,突出显示日期的第一部分应该是从第一行一直到当前周五的所有内容。有时候这个日期不在表单中,所以我有一些额外的行检查是否没有列出该日期,它将检查当前的星期四。当使用.find方法搜索列时,我遇到了问题,并且即使我没有if语句,也有问题说我正在使用结尾。对我得到的错误感到困惑。

Dim friday As Date
Dim rng As Range

LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Range("A:A, C:C, H:H, J:J").Delete

friday = Date + 8 - Weekday(Date, vbFriday)

Columns("C:C").Select
Set rng = Selection.Find(What:=friday, After:=Range("C1"),
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _
SearchFormat:=False)

    If Not rng Is Nothing Then rng.Select

    Else: friday = friday - 1

    End If

1 个答案:

答案 0 :(得分:0)

很难准确说出你要对代码做些什么。您正在使用.Find查找friday,但之后您似乎没有做任何事情。另外,尽可能避免使用.Select。没有必要选择数据来对其执行某些操作。此代码将查看A列中的所有值,并突出显示等于friday的日期:

Sub test()

Dim friday As Date
Dim sht_data As Worksheet
Dim i, LastRow as long

Set sht_data = ThisWorkbook.Sheets("Data") 'change to your sheet name

friday = Date + 8 - Weekday(Date, vbFriday) 'get date for comparison

With sht_data
    LastRow = .Cells(Cells.Rows.Count, 1).End(xlUp).Row 'get last row

    For i = 1 To LastRow 'assumes data starts in first row
        If .Cells(i, 1).Value = friday Then
            .Cells(i, 1).Interior.Color = RGB(255, 255, 0) 'highlight yellow
        Else: End If
    Next i
End With

End Sub

您可以使用它来突出显示数据范围(例如,更新If子句以检查范围)。

相关问题