I have a worksheet with three columns (A, B and C) of data. This extract of code from a larger piece of code is designed to change the status of column B from 'To Be Run' to 'Report Complete' once the macro has been run. All works fine except when either column has a filter applied. This then creates N/A in some of the cells or shifts the content of cells across by 1 column.

Worksheets("Template").Visible = True
    For c = LBound(arrNames, 1) + 1 To UBound(arrNames, 1)
            If arrNames(c, 2) = "To Be Run" Then
                arrNames(c, 2) = "Report Complete"
                Worksheets("Template").Copy After:=Worksheets(Worksheets.Count)
                    With ActiveSheet
                        .Name = arrNames(c, 1)
                        .Cells(8, "C").Value = .Name
                    End With
Is there a way to adapt this to accommodate situations where the columns are filtered?

Many thanks