When part of the .rowsource of a listbox changes it appears to deselect the selection!
So grab a list of selected rows first, then process them.
Just tweaking your code a little:
Dim SelectedRows()
ReDim SelectedRows(1 To 1)
idx = 0
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
idx = idx + 1
ReDim Preserve SelectedRows(1 To idx)
SelectedRows(idx) = i
End If
Next i
Set rngSearch = Sheet1.Range("B2:B25")
TextCheckDate = "zzz" 'readjust this
For Each SelectedRow In SelectedRows
Set rngFound = rngSearch.Find(what:=.List(SelectedRow, 1), LookIn:=xlFormulas, lookat:=xlWhole, MatchCase:=False)
If Not rngFound Is Nothing Then
rngFound(1, 3).Value = TextCheckDate
End If
Next SelectedRow
End With
but this is not robust, because if you have two values in column B the same, the .Find process will only ever find the first.
The following will circumvent that:
Dim SelectedRows()
idx = 0
ReDim SelectedRows(1 To 1)
With Me.ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
idx = idx + 1
ReDim Preserve SelectedRows(1 To idx)
SelectedRows(idx) = i
End If
Next i
Set yyy = Range(.RowSource)
TextCheckDate = "zzz"
For Each SelectedRow In SelectedRows
yyy.Cells(SelectedRow + 1, 4).Value = TextCheckDate
Next SelectedRow
' 'reinstate selected items:
' For Each SelectedRow In SelectedRows
' ListBox1.Selected(SelectedRow) = True
' Next SelectedRow
End With