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

3

我有一个循环,检查列中的每个单元格并找到特定日期(目前是上周的星期一)。我的代码能够正确选择它们,但我希望它保持先前的选择,以便最终选中该规格的所有单元格。

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

作为额外的补充,如果要将该功能更改为上周的不同日期,只需将vbMonday更改为vbTuesday等即可吗?我承认我不太了解VBA,大部分内容都是从这里拼凑而成的。
1个回答

17

最佳的方式是使用 Union 方法存储范围内的所有单元格。

此外,我不建议使用.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

还有一件事... 请注意应尽可能避免使用xlDown。 您可能想查看这个链接


运行得非常好,还用你提供的链接中建议的方法替换了xlDown。 - Le Ish Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接