Заставить листы скрывать / показывать с помощью флажков в ListBox - PullRequest
0 голосов
/ 07 апреля 2020

Screenshot1

На основе текущего кода, показанного ниже (большой привет Сэмюэлю Эверсону), я смог автоматически создать флажки под списком (как показано на скриншоте). Однако возможно ли для флажков скрывать / показывать вкладки? Поэтому, если я поставлю галочку Склад 1 , он должен показать вкладку для Warehouse 1 и скрыться, когда я сниму флажок; et c et c.

Теперь проблема в том, что я действительно не знаю, как действовать дальше. Любая помощь будет отличной! Заранее большое спасибо. :)


Dim WorksheetArray() As Variant
Dim WorksheetIndex As Long
Dim ArrayElement As Variant
Dim NumberOfSheets As Long

NumberOfSheets = ThisWorkbook.Sheets.Count
ReDim WorksheetArray(1 To NumberOfSheets)

For WorksheetIndex = 1 To UBound(WorksheetArray)
    WorksheetArray(WorksheetIndex) = ThisWorkbook.Sheets(WorksheetIndex).Name
Next WorksheetIndex

ThisWorkbook.Sheets("CheckBoxSheet").WarehouseListBox.Clear
ThisWorkbook.Sheets("CheckBoxSheet").ShippingListBox.Clear
ThisWorkbook.Sheets("CheckBoxSheet").QualityListBox.Clear
ThisWorkbook.Sheets("CheckBoxSheet").SecurityListBox.Clear

For Each ArrayElement In WorksheetArray()
    If ArrayElement Like "Warehouse*" Then

    ElseIf ArrayElement Like "Shipping*" Then
        ThisWorkbook.Sheets("CheckBoxSheet").ShippingListBox.AddItem ArrayElement

    ElseIf ArrayElement Like "Quality*" Then
        ThisWorkbook.Sheets("CheckBoxSheet").QualityListBox.AddItem ArrayElement

    ElseIf ArrayElement Like "Security*" Then
        ThisWorkbook.Sheets("CheckBoxSheet").SecurityListBox.AddItem ArrayElement

    End If

Next ArrayElement

End Sub


Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

Вот простой пример, который вы, возможно, можете настроить в соответствии с вашими настройками.

Private Sub ListBox1_Change()

Dim i As Long

For i = 0 To Me.ListBox1.ListCount - 1
    Worksheets(Me.ListBox1.List(i)).Visible = Me.ListBox1.Selected(i) 'true if selected
Next i

End Sub

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

1 голос
/ 08 апреля 2020

в основном, просто повторите для всех остальных 4 списков, как указано в проблеме, которую я разместил.

Private Sub WarehouseListBox_Change()
    Dim i As Integer

    For i = 0 To Me.WarehouseListBox.ListCount - 1
        If Me.WarehouseListBox.Selected(i) Then
            Worksheets(Me.WarehouseListBox.List(i)).Visible = True
        Else
            Worksheets(Me.WarehouseListBox.List(i)).Visible = False
        End If
    Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...