如何在Excel VBA中添加当前单元格选择

Le *_*Man 2 excel vba excel-vba

所以我有一个循环,它检查列中的每个单元格并找到一个特定的日期(当前是前一周的星期一).我的代码现在确实正确地选择它们但是我希望它保留先前的选择,所以最后选择该规范的所有单元格

Public Function LastMonday(pdat As Date) As Date
        LastMonday = DateAdd("ww", -1, pdat - (Weekday(pdat, vbMonday) - 1))
End Function

Sub Macro2()

 Macro2 Macro



Dim rng As Range
Dim curCellValue As String
Dim mondayStr As String

mondayStr = Format(LastMonday(Date), "dd/mm/yyyy")

Set rng = Range(ActiveSheet.Range("E2"), ActiveSheet.Range("E2").End(xlDown))

For Each Cell In rng
    curCellValue = Cell.Value
    If curCellValue = mondayStr Then Cell.Select
Next Cell

End Sub
Run Code Online (Sandbox Code Playgroud)

作为奖励,要将函数更改为上周的另一天,我只需将vbMonday更改为vbTuesday等吗?我承认我不太了解VBA,而且大部分都只是来自这里的frankensteined.

Sid*_*out 14

最好的方法是使用UnionMethod 将所有单元格存储在一个范围内.

我也不建议使用.Select.你可能想看看这个

修改您的代码以添加此代码.

Dim MySel As Range

For Each cell In Rng
    If cell.Value = mondayStr Then
        If MySel Is Nothing Then
            Set MySel = cell
        Else
            Set MySel = Union(MySel, cell)
        End If
    End If
Next cell

If Not MySel Is Nothing Then
    With MySel
        '.Select
        '~~> Do something
    End With
End If
Run Code Online (Sandbox Code Playgroud)

还有一件事......请注意,xlDown应尽可能避免.你可能想看看这个