我有一个VBA脚本,用于搜索并查找列中单元格的值,然后向右偏移3列并放置时间戳。但是,我遇到了它在列中找到的第一个匹配的问题,但是我想让它为最后一个匹配而做。
Private Sub ExitButton_Click()
Dim cell As Range
Set cell = Range("D1", Cells(Rows.Count, 4).End(xlUp)).Find(What:=Me.UsId.Value, LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
If cell Is Nothing Then
MsgBox "User ID '" & Me.UsId.Value & "' not found! Please enter the ID used while signing in.", vbExclamation
Else
cell.Offset(0, 3) = Format(Now(), "hh:mm AMPM")
End If
Me.UsId.Value = ""
Me.UsId.SetFocus
End Sub
我对VBA脚本非常陌生,所以我不确定这是否可行。
答案 0 :(得分:1)
你只需要从顶部开始并添加SearchDirection:= xlPrevious和After:= [第一个单元格] 。这曾经被称为锡罐循环。由于第一个单元格之前没有任何内容,因此它从底部开始查找。
如果您只想查看D列,
with columns("D")
Set cell = .cells.Find(What:=Me.UsId.Value, After:=.cells(1), SearchDirection:=xlPrevious, _
LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
end with
If cell Is Nothing Then
MsgBox "User ID '" & Me.UsId.Value & "' not found! Please enter the ID used while signing in.", vbExclamation
Else
cell.Offset(0, 3) = Now
cell.Offset(0, 3).numberformat = "hh:mm AM/PM"
End If