2016-06-26 4 views
1

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

Visual of description

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 

答えて

2

は、列をループする必要はありません名前を付けます。コードの下に試してみてください。

Private Sub CommandButton1_Click() 
    Dim rngFound As Range 
    Dim strFirst As String 
    Dim strID As String 
    Dim strDay As String 

    strID = techname1.Value 
    strDay = "" 

    'below line will give you the last occurrence of strID 
    Set rngFound = Columns("B").Find(strID, Cells(Rows.Count, "B"), xlValues, xlWhole, , xlPrevious) 
    If Not rngFound Is Nothing Then 
     Application.Worksheets("SignOut").Cells(rngFound.Row, "G").Value = Now() 
    End If 

    Set rngFound = Nothing 

    Unload Me 
End Sub 

Find関数の構文は次のとおりです。

Range_Object.Find(何を、した後、のlookin、ルックアット、SearchOrder、SearchDirection、MatchCase、MatchByte、SearchFormat)

ここでは、SearchDirectionは、範囲とcで検索する際の検索方向を指定するオプションのパラメータです>範囲内の次のマッチング値の探索

  • xlPrevious - - これら両者の>範囲内の前のマッチング値の探索
    • xlNext:follwing 2つの値の一方を取りますxlNextがデフォルトです。あなたがそれを言及しないときは、を見つけるxlNextを使用し、範囲が列であるあなたのケースで上から下を検索します。だから最後の文字列の使用を取得するxlPreviousこれは、列の下から上を検索します。

    +0

    上記の回答は間違いありませんが、いくつかの最小限の説明を追加することもできます。あなたのコードで最も重要な変更は(あなたが言う限りでは)[SearchDirection:= xlPrevious'([Range.Findメソッド](https://msdn.microsoft.com/en-us/)の一部として追加されたものです。 /library/office/ff839746.aspx))。したがって、Excelは行の最後の行から始めて、 'strID'の最初の出現が見つかるまで(リストの最後の行が見つかるまで)検索します。 – Ralph

    +0

    @Ralph - 説明が追加されました。フィードバックに感謝します。 – Mrig

    +0

    @Josh - これが助けになりましたか? – Mrig

    関連する問題