This post related to my previous post about the same listbox (see here).

I have the following routine which in its simplest form changes the data displayed in the listbox (the last column changes status between Action and Complete).

Dim x As Integer, Result As Range, Data As Variant
x = Entries.ListIndex

If Entries.Column(4, x) = "Action" Then

Sheets("Extra Data").Select
Range("A:I").Select
Selection.AutoFilter Field:=8, Criteria1:=Entries.Column(3, x)
Selection.AutoFilter Field:=6, Criteria1:=Entries.Column(2, x)

    With Selection
        Set Result = .Range("B:B").Find(What:=Entries.Column(1, x), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
                With Result
                    Result.Offset(0, 7).Value = "Complete"
                End With
    End With

Sheets("Enter Data").Select
Range("A:E").Select
Selection.AutoFilter Field:=4, Criteria1:=Entries.Column(3, x)
Selection.AutoFilter Field:=3, Criteria1:=Entries.Column(2, x)

    With Selection
        Set Result = .Range("B:B").Find(What:=Entries.Column(1, x), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
                With Result
                    Result.Offset(0, 3).Value = "Complete"
                End With
    End With
    
Sheets("Extra Data").AutoFilterMode = False
Sheets("Enter Data").AutoFilterMode = False

Data = Range(Range("A5"), Range("E65536").End(xlUp)).Value
        With Entries
            .ColumnCount = 5
            .ColumnWidths = "55,295,95,230,50"
            .List = Data
        End With
        
Else
Sheets("Extra Data").Select
Range("A:I").Select
Selection.AutoFilter Field:=8, Criteria1:=Entries.Column(3, x)
Selection.AutoFilter Field:=6, Criteria1:=Entries.Column(2, x)

    With Selection
        Set Result = .Range("B:B").Find(What:=Entries.Column(1, x), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
                With Result
                    Result.Offset(0, 7).Value = "Action"
                End With
    End With

Sheets("Enter Data").Select
Range("A:E").Select
Selection.AutoFilter Field:=4, Criteria1:=Entries.Column(3, x)
Selection.AutoFilter Field:=3, Criteria1:=Entries.Column(2, x)

    With Selection
        Set Result = .Range("B:B").Find(What:=Entries.Column(1, x), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)
                With Result
                    Result.Offset(0, 3).Value = "Action"
                End With
    End With
    
Sheets("Extra Data").AutoFilterMode = False
Sheets("Enter Data").AutoFilterMode = False

Data = Range(Range("A5"), Range("E65536").End(xlUp)).Value
        With Entries
            .ColumnCount = 5
            .ColumnWidths = "55,295,95,230,50"
            .List = Data
        End With
        
End If
Entries.Selected(x) = True
It has to work with two sheets as I wanted a limited amount of data to be displayed in the listbox but extra data to be displayed to save room - to do this the simplified data is stored in worksheet "Enter Data" and the full data stored in the worksheet "Extra Data".

The one thing I'm having problems with is re-selecting the entry I change. The above routine works fine sometimes but othertimes it reselects a completely different item in the listbox once the "new data" has been reloaded into it. I want it to always reselect the relevant entry so I store "Entries.ListIndex" into an Integer variable (x) then use the code "Entries.Selected(x) = True" to reselect it.

Is there any reason it randomly decides to select other entries?

~ Liam