Показать 4 столбца при каждом нажатии кнопки - PullRequest
0 голосов
/ 07 января 2019

У меня есть более 20 скрытых столбцов с данными. Я хочу, чтобы отображались 4 столбца, а затем следующие 4 столбца при каждом нажатии кнопки.

Я попробовал приведенный ниже код. Вместо 4 столбцов одновременно отображаются все 20 столбцов одним кликом.

Sub compare() ' 
'compare macro 
'selects the button1 rows for the output tab 
application.screenupdating=true  
range("I10:AR62").entirecolumn/hidden=false
range("B1").select  
application.screenupdating=false  
End

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я знаю, что прошло несколько дней с тех пор, как кто-то написал об этом, но я решил опубликовать эту часть макроса, который я создал для другого проекта. Это должно работать как задумано, а переменные уже настроены в соответствии с вопросом ОП.

Sub DynHideColumns()

FirstColumn = 9 ' First Column that could be hidden
LastColumn = 200 ' Last Column that could be hidden
ColumnSteps = 4 ' Number of columns to hide per start
x = FirstColumn
Z = 1
ReDim y(1 To ColumnSteps)

Do Until x > LastColumn
    If ActiveSheet.Range(Columns(x), Columns(x)).EntireColumn.Hidden = False Then
        If Z <= ColumnSteps Then
            y(Z) = x
            Z = Z + 1
        Else
            y(1) = ""
        End If
    End If
x = x + 1
Loop

ActiveSheet.Range(Columns(FirstColumn), Columns(LastColumn)).EntireColumn.Hidden = True

If y(1) = "" Then
    ActiveSheet.Range(Columns(FirstColumn), Columns(FirstColumn + ColumnSteps - 1)).EntireColumn.Hidden = False
Else
    If y(ColumnSteps) = LastColumn Then
        ActiveSheet.Range(Columns(FirstColumn), Columns(FirstColumn + ColumnSteps)).EntireColumn.Hidden = False
    Else
        ActiveSheet.Range(Columns(y(1) + ColumnSteps), Columns(y(ColumnSteps) + ColumnSteps)).EntireColumn.Hidden = False
    End If
End If

End Sub
0 голосов
/ 10 января 2019

вы хотите что-то вроде:

range(columns(j),columns(j+k)).entirecolumn.hidden=true
range(columns(y),columns(y+z)).entirecolumn.hidden=false

но вам нужна логика, чтобы определить, что j ... первый сценарий - это то, где ничего не скрыто:

if not columns(9).entirecolumn.hidden and not columns(13).entirecolumn.hidden and not columns(17).entirecolumn.hidden and not columns(21).entirecolumn.hidden then

Тогда вам захочется спрятать такое, что:

j = 13
k = 15

Если этот сценарий не соответствует действительности (ELSE), у вас должна быть встроенная логика, чтобы определить, что скрыто, и показать другие разделы:

if not columns(9).entirecolumn.hidden then 
    j = 9
    k = 3
    y = 13
    z = 3

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

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

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