1
だから、私はこのコードを使って、誰が自分の名前を選択するためにユーザーフォームを使うときはいつでも、誰がサインインしているのかを見つけ、NOW =()をG列に入れます。私が抱えている唯一の問題は、人がシート上にいれば、最後のものではなく、行Gのすべてのエントリを置き換えることです。 B列の技術者名の最後の反復のG列にnow =()関数を配置したいだけです。技術者の最後の発生を取得するには各値の代わりに最後の値を見つけよう
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