Так что прямо сейчас у меня есть этот код, чтобы найти, кто подпишет, и поместите NOW =() в столбец G всякий раз, когда они используют пользовательскую форму для выбора своего имени. Единственная проблема, с которой я сталкиваюсь, заключается в том, что если человек находится на листе ранее, он заменяет все записи строки G, а не только последнюю. Я только хочу, чтобы она поместила функцию now =() в столбец G последней итерации имени техников в столбце B.Найти последнее значение в столбце вместо каждого значения
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 Method] (https://msdn.microsoft.com/en-us /library/office/ff839746.aspx)). Таким образом, Excel будет искать строки за строкой, начиная с самой последней строки и поднимаясь до тех пор, пока не будет найдено первое вхождение 'strID' (которое является последним в списке). – Ralph
@ Ralph - Пояснение добавлено, спасибо за отзыв. – Mrig
@Josh - Помогла ли эта помощь? – Mrig