Возникли проблемы при группировке наборов строк в коде кнопки toggle.button. - PullRequest
1 голос
/ 08 ноября 2019

'Я пытаюсь переключить кнопку, чтобы скрыть группы строк. В данном случае строки с 15 по 20, с 22 по 25, 27 и, наконец, с 30 по 32.

Код, который у меня есть (работает должным образом), следующий:

Private Sub ToggleButton5_Click()
Dim xAddress As String

  xAddress = ("15:20")
  If ToggleButton5.Value Then
    Application.ActiveSheet.Rows(xAddress).Hidden = True
    ToggleButton5.Caption = "Show Assets"
  Else
    Application.ActiveSheet.Rows(xAddress).Hidden = False
    ToggleButton5.Caption = "Hide Assets"
  End If

End Sub

Однако я не могу добавить несколько групп в эту строку. Для страховки я попробовал

xAddress = ("15: 20,22: 25")

xAddress = "15: 20,22: 25"

xAddress = ("15:20 и 22:25")

и я даже попробовал индивидуально

xAddress = ("15,16,17,18,19,20,22,23,24,25 ")

Эта последняя строка работает несколько, но встречается с ошибками, если цитируется более чем 6 номеров строк (исходя из памяти при прошлых попытках)

Заранее благодарю за любую помощь.

enter image description here

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Если вам нужен «тумблер», то подумайте о реализации «радио-кнопки-логики». Это либо на , либо на , таким образом, если это не Hidden, это должно быть Hidden и наоборот. Обычно это только одна строка:

Sub ToggleRowsVisibility()

    With ThisWorkbook.Worksheets(1).Range("15:20,22:25")
        .EntireRow.Hidden = Not .EntireRow.Hidden
    End With

End Sub

В случае кода это может быть вне условия If:

Application.ActiveSheet.Rows(xAddress).Hidden = ToggleButton5.Value
1 голос
/ 08 ноября 2019

Используйте Range вместо Rows.

Application.ActiveSheet.Range(xAddress).Hidden = True

Если вы используете Range, убедитесь, что ссылка на строку имеет вид row:row, например 1:1, 2:2, 3:3, а не1, 2, 3.

Обычно я держусь подальше от Rows. Например,

Debug.Print Rows("1,2,3").Address

возвращает

$123:$123

Не то, что вы ожидаете, верно?

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