Question: Suppose I have 10 rows of data. I apply some filter to the data and row numbers 7 and 9 are *filtered* **OR** *visible*.

I want to loop through the data (10 Rows) and output the string *"Is Visible"* in a blank column *(suppose Column C)*, **only** for the Visible rows *(i.e. Range C7 and Range C9).*

Answer: 
Choose some of the first 10 rows to hide, and then try running this

```
Option Explicit

Sub CheckIfVisible()

Dim i As Integer, x As Integer
x = 0
For i = 1 To 10
    With Excel.ThisWorkbook.ActiveSheet
        If .Rows(i).EntireRow.Hidden Then
        Else
            .Cells(15 + x, 1) = "Row " & i & "is visible"
            x = x + 1
        End If
    End With
Next i

End Sub

```

Is this the sort of loop you're looking for?  

Maybe you can show us your Loop so we can see where your problem is?
Inspired by @whytheq I came up with this, so it loops through all visible rows **in selection**:

```
Sub Loop_through_selected_rows()
Dim rng As Range: Set rng = ActiveWindow.RangeSelection
Dim i As Integer
For i = 0 To rng.Rows.Count - 1
    If Cells(rng.Row + i, 1).EntireRow.Hidden Then
    Else
        Cells(rng.Row + i, 1).Range("A1:E1").Select 'Set Range within row to your needs
        ' Do something here
    End If
Next
End Sub

```