Sub showColumn() Dim lc&, j& lc = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 1 On Error Resume Next For j = lc To 1 Step -1 If Columns(j).Hidden = True And (Columns(j - 1).Hidden = False Or j = 1) Then Columns(j).Hidden = False End If Next j End Sub
[/vba]
jurafenix, здравствуйте, так? [vba]
Код
Sub showColumn() Dim lc&, j& lc = ActiveSheet.UsedRange.Columns.Count + ActiveSheet.UsedRange.Column - 1 On Error Resume Next For j = lc To 1 Step -1 If Columns(j).Hidden = True And (Columns(j - 1).Hidden = False Or j = 1) Then Columns(j).Hidden = False End If Next j End Sub
Марина, это же не удаление/добавление столбцов, а только изменение их ширины, поэтому определять последний столбец и делать цикл с шагом Step -1 не нужно. Да и jurafenix хочет показать не все скрытые, а только самый левый. К тому же не известно, каким способом скрыт столбец. шириной или "Скрыть". Поэтому можно сделать универсальнее проще: [vba]
Код
Sub ShowFirstHiddenColumn() Dim C& For C = 1 To ActiveSheet.UsedRange.Columns.Count If Columns(C).Hidden Or Columns(C).ColumnWidth = 0 Then Columns(C).Hidden = False: Exit For Next C End Sub
[/vba]
Марина, это же не удаление/добавление столбцов, а только изменение их ширины, поэтому определять последний столбец и делать цикл с шагом Step -1 не нужно. Да и jurafenix хочет показать не все скрытые, а только самый левый. К тому же не известно, каким способом скрыт столбец. шириной или "Скрыть". Поэтому можно сделать универсальнее проще: [vba]
Код
Sub ShowFirstHiddenColumn() Dim C& For C = 1 To ActiveSheet.UsedRange.Columns.Count If Columns(C).Hidden Or Columns(C).ColumnWidth = 0 Then Columns(C).Hidden = False: Exit For Next C End Sub
если файл пустой, то и UsedRange пусто (Nothing) заполните какими-нибудь данными 1-ю строчку на листе, потом скройте некоторые столбцы и запустите макрос. Должно работать
если файл пустой, то и UsedRange пусто (Nothing) заполните какими-нибудь данными 1-ю строчку на листе, потом скройте некоторые столбцы и запустите макрос. Должно работатьnilem
пустом файле скрыл три столбца, макрос их не показывает
[vba]
Код
ActiveSheet.UsedRange.Columns.Count
[/vba]Определяет № последнего заполненного столбца диапазона таблицы. И цикл For будет повторяться до этого №-ра. Так, какой же № заполненного столбца он определит на пустом листе? На "пальцах" вроде так.
пустом файле скрыл три столбца, макрос их не показывает
[vba]
Код
ActiveSheet.UsedRange.Columns.Count
[/vba]Определяет № последнего заполненного столбца диапазона таблицы. И цикл For будет повторяться до этого №-ра. Так, какой же № заполненного столбца он определит на пустом листе? На "пальцах" вроде так. Wasilich
Сообщение отредактировал Wasilich - Понедельник, 09.01.2017, 14:17