Как запустить код VBA, если ни одна из ячеек в столбце отфильтрованной таблицы не пуста? - PullRequest
0 голосов
/ 27 июня 2019

Я хочу запустить код VBA, когда все ячейки в столбце отфильтрованной таблицы содержат значение.Я хочу, чтобы фигура была видимой, только когда каждая ячейка в столбце имеет значение, в противном случае я хочу, чтобы она оставалась скрытой.

Я использую следующий код в Excel VBA:

Sub Worksheet_Change(ByVal Target As Range)

Dim rng As Range
Set rng = Range("Table1[Verify]").SpecialCells(xlCellTypeVisible)

Dim i As Range

For Each i In rng.Cells
    If i.Value <> "" Then
        ActiveSheet.Shapes("Oval 6").Visible = True
    ElseIf i.Value = "" Then
        ActiveSheet.Shapes("Oval 6").Visible = False
    End If

Next i

End Sub

Форма скрыта, когда последняя ячейка в столбце пуста, и видима, когда последняя ячейка имеет значение.Однако, если все остальные ячейки пустые, а последняя нет, форма остается видимой.

Другими словами: я хочу, чтобы фигура была видимой, когда ВСЕ ячейки xlCellTypeVisible не пустые, и я хочу, чтобыскрыто, если ЛЮБОЙ из них является пробелом.

1 Ответ

1 голос
/ 28 июня 2019

Причина, по которой видимость зависит только от последней ячейки, заключается в том, что у вас нет выхода в цикле.Если он находит пустую ячейку, он все равно смотрит на следующую ячейку и скрывает или показывает форму на основе следующего значения.

В основном вы хотите прекратить смотреть на строку в тот момент, когда вы нажмете пустую ячейку.

Это означает, что вам нужно использовать оператор Exit For:

ElseIf i.Value = "" Then
    ActiveSheet.Shapes("Oval 6").Visible = False
    Exit For
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...