2015-07-31 11 views
2

В настоящее время я пытаюсь скрыть определенные столбцы, если Row(8:8) отвечает определенным критериям. Мой цикл For Each в настоящее время не работает. Может ли кто-нибудь указать мне в правильном направлении?Сокрытие столбцов с помощью VBA

Sub hide() 
' hide Macro 
' 
Dim rng As Range 

    For Each rng In Range("F:BJ").Columns 
     If Rows.Range("8") = "Test" Or Rows.Range("8") = "Test1" Then 
      Column.rng.EntireColumn.Hidden = True 
     End If 

    Next rng 
End Sub 

ответ

3

Вы можете сделать это следующим образом:

Dim rng As Range 
For Each rng In Range("F8:BJ8") 

    If rng.Value = "Test" Or rng.Value = "Test1" Then 
     rng.EntireColumn.Hidden = True 
    End If 

Next rng 
+0

@Bond - Я понимаю, что мой ответ очень * близок к вашему, но я оставлю его, поскольку он удаляет чувствительность к регистру и переключает столбец обратно на видимое, если значение изменилось. – Jeeped

+0

@Jeeped - Чем больше, тем веселее, если это помогает OP. – Bond

2

Предположительно, вы хотели бы, чтобы отобразить столбцы, если значение в строке 8 было изменено программно или иным образом.

Dim rng As Range 
With Worksheets("Sheet1") 
    For Each rng In .Range("F8:BJ8") 
     rng.EntireColumn.Hidden = _ 
      CBool(LCase(rng.Value) = "test" Or LCase(rng.Value) = "test1") 
    Next rng 
End With 
1

Диапазоны строк и столбцов относятся ко всей электронной таблице, если вы не указали диапазон.

Sub hideColumn() 

    Dim rng As Range 

    For Each rng In Range("F:BJ").Columns 
     If rng.Rows(8) = "Test" Or rng.Rows(8) = "Test1" Then 
      rng.EntireColumn.Hidden = True 
     End If 
    Next rng 

End Sub 
Смежные вопросы