【问题标题】:How to add to current cell selection in Excel VBA如何在 Excel VBA 中添加到当前单元格选择
【发布时间】:2014-09-11 19:00:10
【问题描述】:

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

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 不太了解,而且其中大部分内容都是从这里被弗兰肯斯坦弄出来的。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

    我也不推荐使用.Select。你可能想看看THIS

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

    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。你可能想看看THIS

    【讨论】:

    • 像魅力一样工作,还用链接中建议的方法替换了 xlDown。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多