1
所以,現在我有這段代碼來查找哪個人正在登錄,並且在G列中將NOW =()置於每當他們使用用戶表單選擇其名稱時。我遇到的唯一問題是,如果此人以前在工作表中,它會替換所有的G行,而不僅僅是最後一個。我只希望它將now =()函數放在B列中最後一次技術員名稱迭代的G列中。查找列中的最後一個值而不是每個值
Private Sub CommandButton1_Click()
Dim rngFound As Range
Dim strFirst As String
Dim strID As String
Dim strDay As String
strID = techname1.Value
strDay = ""
Set rngFound = Columns("B").Find(strID, Cells(Rows.Count, "B"), xlValues, xlWhole)
If Not rngFound Is Nothing Then
strFirst = rngFound.Address
Do
Application.Worksheets("SignOut").Cells(rngFound.Row, "G").Value = Now()
Set rngFound = Columns("B").Find(strID, rngFound, xlValues, xlWhole)
Loop While rngFound.Address <> strFirst
End If
Set rngFound = Nothing
Unload Me
End Sub
雖然上面的答案是絕對正確的,但您仍可能想要添加一些最基本的解釋。代碼中最重要的變化(就我所知)是添加了'SearchDirection:= xlPrevious'(作爲[Range.Find方法]的一部分(https://msdn.microsoft.com/en-us /library/office/ff839746.aspx))。因此,Excel將從最後一行開始逐行搜索,直到找到第一個出現的「strID」(這是列表中的最後一個)。 – Ralph
@Ralph - 解釋補充說,感謝您的反饋意見。 – Mrig
@Josh - 這有幫助嗎? – Mrig