Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Чистка рабочей книги от неиспользуемых имён, стилей, и т.д.
 
Приветствую.
Может быть кому-то еще будет интересно.
Столкнулся с "жирностью" и в поисках набрел на это решение, которое оказалось нерабочим минимум в Excel 2010 в части очистки/удаления "заграничных" ячеек.
Других удобных и работающих вариантов не нашлось, так что потратил время на разборки и доработку предложенного здесь.
Правки ниже касаются функции Очистить_СтолбцыСтроки. Ошибочно определялось (скорее не определялось) значение переключателя _ЧиститьУдалять. И не работал оператор, задающий диапазон ячеек для последующей чистки/удаления (Set rToClear=...), диапазон оказывался пустым из-за переполнения.
После некоторых раздумий родился фикс, успешно справляющийся со своей задачей. Неработающие строки закомментированы, следом идут работающие.
Код
        If Not IsSheetEmpty(wsh) Then
            Set cLastCell = wsh.Cells.Find("*", wsh.Cells(1), xlFormulas, xlPart, xlByColumns, xlPrevious, False, False)
            If cLastCell.Column < wsh.Columns.Count Then
'                Set rToClear = Range(wsh.Columns(cLastCell.Column + 1), wsh.Cells(wsh.Cells.Count))
'                If ThisWorkbook.Names("_ЧиститьУдалять") = 1 Then
                 If ThisWorkbook.Names("_ЧиститьУдалять").RefersToRange.Value = 1 Then
'                    rToClear.Clear
                     wsh.Columns((cLastCell.Column + 1) & ":" & wsh.Columns.Count).Clear
                Else
'                    rToClear.Merge        'защита от автокоррекции высоты строк
                     wsh.Columns((cLastCell.Column + 1) & ":" & wsh.Columns.Count).Merge
'                    rToClear.Delete
                     wsh.Columns((cLastCell.Column + 1) & ":" & wsh.Columns.Count).Delete
                End If
            End If
            Set cLastCell = wsh.Cells.Find("*", wsh.Cells(1), xlFormulas, xlPart, xlByRows, xlPrevious, False, False)
            If cLastCell.Row < wsh.Rows.Count Then
'                Set rToClear = Range(wsh.Rows(cLastCell.Row + 1), wsh.Cells(wsh.Cells.Count))
'                If ThisWorkbook.Names("_ЧиститьУдалять") = 1 Then
                 If ThisWorkbook.Names("_ЧиститьУдалять").RefersToRange.Value = 1 Then
'                    rToClear.Clear
                    wsh.Rows((cLastCell.Row + 1) & ":" & wsh.Rows.Count).Clear
                Else
'                    rToClear.Merge
                    wsh.Rows((cLastCell.Row + 1) & ":" & wsh.Rows.Count).Merge
'                    rToClear.Delete
                    wsh.Rows((cLastCell.Row + 1) & ":" & wsh.Rows.Count).Delete
                End If
            End If
        End If
Изменено: NewcomerAl - 04.10.2017 15:07:25 (форматирование кода)
Страницы: 1
Наверх