VBA - Скрыть предопределенные диапазоны, используя VBA - PullRequest
0 голосов
/ 10 января 2020

У меня есть относительно сложная проблема, которая, как мне кажется, относится к тому, как я определяю переменные, и я не могу решить проблему, следовательно, вопросы ниже. Спасибо, что уделили время на прочтение.

У меня есть лист 1 и лист 2

На листе 1 таблица составлена ​​на основе выбора пользователя, на основе значений флажков и т. Д. c. Это работает нормально.

Затем я смотрю на определенную строку на листе 1 и ее значение, применяя =(int(not(isblank(cellreference)))), это дает мне 1, если у него есть значение, или ноль, если у него нет ценность.

Затем я суммирую сумму 1 с, чтобы получить значение. Это значение добавляется в предопределенный диапазон на листе 2, который является «результатом» таблицы на листе 1. По сути, это печать документа, но я не хочу, чтобы отображались пустые строки.

Используя полученное значение, я применяю ="A"&"191"+SUM(P5:P20)&":M206", который дает мне диапазон A199: M206 (ячейка с именем HideRowsGF. Затем я хочу использовать этот диапазон на листе 2, чтобы скрыть строки, поэтому мой код приведен ниже, но я не могу заставить его работать для

Выполнение и если, если if правильно, я вызываю HideRows Скрыть строки ниже

Private Sub HideRows() ' Range 191 - 206
    Dim HideRowsSheet2 As String
    Set HideRowsSheet2 = SH1.Range("HideRowsGF").Value
    'SH2.Rows("HideRowsSheet2").EnireRow.Hidden = True
End Sub

В основном я использую формулу, чтобы получить путь на листе 1, и пытаюсь использовать путь, чтобы скрыть строки на листе 2, но не могу заставить его работать.

Пожалуйста, дайте мне знать ваши мысли. Спасибо

1 Ответ

1 голос
/ 10 января 2020

У вас есть несколько проблем с синтаксисом и одной опечаткой.

Для строки Set HideRowsSheet2 = SH1.Range("HideRowsGF").Value - vba не требуется устанавливать значение строки с помощью ключевого слова Set.

Для строки 'SH2.Rows("HideRowsSheet2").EnireRow.Hidden = True у вас есть три проблемы - опечатка с EnireRow, вы не ссылаетесь на строковую переменную с помощью кавычек, и вы не можете выбирать строки в диапазоне, используя Rows() функция.

Private Sub HideRows()

    Dim SH1 As Worksheet
    Set SH1 = Sheets("Sheet1")

    Dim SH2 As Worksheet
    Set SH2 = Sheets("Sheet2")

    Dim HideRowsSheet2 As String
    HideRowsSheet2 = SH1.Range("HideRowsGF").value  'named range HideRowsGF has address "A199:M206"

    SH2.Range(HideRowsSheet2).EntireRow.Hidden = True

End Sub
...