изменить переборку всех листов на 1 лист

Автор EVG_39, 05.09.2012, 18:26

« назад - далее »

EVG_39

как сделать так, чтобы мой макрос работал только на одном листе:

Sub скрыть_столбцы()
Dim ch, i, k, sh As Variant
For Each sh In ThisWorkbook.Worksheets
    For i = 6 To 47
        ch = 5: k = 5
        Do While sh.Cells(ch, i) <> ""
            If sh.Cells(ch, i) = 0 Then
                k = k + 1
            End If
            ch = ch + 1
        Loop
        If k = ch Then sh.Cells(1, i).EntireColumn.Hidden = True
    Next i
Next

Poltava

проверить нет возможности так что за истину не ручаюсь но попробуйте так
ЦитироватьSub скрыть_столбцы()
Dim ch, i, k, sh As Variant
For Each sh In ThisWorkbook.Worksheets
    sh = ThisWorkbook.ActiveSheet'либо конкретный лист
    For i = 6 To 47
        ch = 5: k = 5
        Do While sh.Cells(ch, i) <> ""
            If sh.Cells(ch, i) = 0 Then
                k = k + 1
            End If
            ch = ch + 1
        Loop
        If k = ch Then sh.Cells(1, i).EntireColumn.Hidden = True
    Next i
Next
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

EVG_39

спасибо большое но еще пришлось убрать sh.и все заработало, вот только выскачила еще проблема,  макрос скрывает колонки с нулевыми значениями в 5-ой строке (с 6 колонки по 47-ую). Но при выполнении данные 6-ой строки("Наименование...") мешает скрывать соответствующую колонку. Помогите, как быть? (см влож файл)

kuklp

Если Вам надо только
Цитироватьскрывает колонки с нулевыми значениями в 5-ой строке (с 6 колонки по 47-ую).
, то и проверяйте только 5-ю строку:
Sub скрыть_столбцы()
Dim i&
    For i = 6 To 47
            If Cells(5, i) = 0 Then Cells(1, i).EntireColumn.Hidden = True
    Next i
End Sub

Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771