[英]How to add to current cell selection in Excel VBA
So I have a loop that checks every cell in a column and finds a specific date (currently the Monday of the previous week). 所以我有一个循环,它检查列中的每个单元格并找到一个特定的日期(当前是前一周的星期一)。 My code right now does select them correctly but I want it to keep the previous selection so in the end all cells of that specification are selected
我的代码现在确实正确地选择它们但是我希望它保留先前的选择,所以最后选择该规范的所有单元格
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
As a bonus, to change the Function to a different day of last week would I simply change the vbMonday to vbTuesday etc? 作为奖励,要将函数更改为上周的另一天,我只需将vbMonday更改为vbTuesday等吗? I admit I don't know VBA very well and most of this is just frankensteined from around here.
我承认我不太了解VBA,而且大部分都只是来自这里的frankensteined。
The best way to do that is to store all the cells in a range using the Union
Method. 最好的方法是使用
Union
方法将所有单元格存储在一个范围内。
Also I wouldn't recommend using .Select
. 我也不建议使用
.Select
。 You may want to see THIS 你可能想看看这个
Amend your code to add this code. 修改您的代码以添加此代码。
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
One more thing... Please note that xlDown
should be avoided as much as possible. 还有一件事......请注意,应尽可能避免使用
xlDown
。 You may want to see THIS 你可能想看看这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.