Неожиданное поведение свойства .Hidden - PullRequest
0 голосов
/ 02 июля 2018

краткое описание того, что мой код должен делать для ясности (поскольку будут использоваться некоторые внешние данные, затрудняющие воспроизведение проблемы) .

Моя цель - создать кнопку переключения, которая будет переключаться между скрытием и отображением таблицы данных между ее свойствами. Они работают нормально, но по какой-то причине свойство .Hidden моего диапазона, кажется, возвращает неожиданные результаты, несмотря на то, что следует рассматривать как очевидное поведение.

Мой лист Excel выглядит так:

enter image description here

И я хочу переключиться между сокрытием и скрытием синего стола.


Private Sub hide_button_Click()


    Dim copy_start As Integer
    Dim copy_end As Integer
    Dim ws As Worksheet: Set ws = Sheets("Summary")
    Dim tbl2 As ListObject: Set tbl2 = ws.ListObjects("t_sum2")



    copy_start = tbl2.HeaderRowRange.Row
    copy_end = tbl2.ListRows.Count + copy_start

   If (ws.Rows(copy_start & ":" & copy_end).EntireRow.Hidden = True) Then
       ws.Rows(copy_start & ":" & copy_end).EntireRow.Hidden = False
   Else
       ws.Rows(copy_start & ":" & copy_end).EntireRow.Hidden = True
   End If



End Sub

Кажется довольно очевидным. Таким образом, после компиляции и запуска процедуры синяя таблица становится скрытой, как и положено.

enter image description here

Однако после повторного запуска процедуры. Эта таблица остается скрытой и не переключается между раскрытием скрытых строк.

Естественно, я думал, что просто неправильно выбираю диапазоны copy_start & copy_end. Поэтому я добавил эти два следующих «сообщения отладки» в свой код (до условия if)

MsgBox(copy_start & vbNewLine & copy_end)
MsgBox(ws.Rows(copy_start & ":" & copy_end).EntireRow.Hidden)

К моему собственному удивлению, он дал следующие результаты:

enter image description here enter image description here

Что меня совершенно сбивает с толку, особенно второй MsgBox относительно того, почему он возвращает свойство .Hidden как False, когда вы можете четко видеть, диапазоны строк copy_start и copy_end рассчитаны правильно, и они соответствуют синему размеру таблицы: (иллюстрация)

enter image description here

Может кто-нибудь объяснить, почему по существу Rows("21:34").EntireRow.Hidden возвращается как Ложь, когда они действительно скрыты? (см. Рис. 2)


EDIT:

Возможно, еще одну деталь, которую я должен раскрыть. Рядом с таблицами есть график. Я не понимаю, как это должно повлиять на эту операцию, но, может быть, через какое-то колдовство ...? Я не знаю

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...