2. Чтобы в проводнике Форточек файлы и папки сортировались в нормальном порядке дат и легко было ориентироваться когда количество файлов или папок достигнет нескольких десятков формат записи даты нужно применять ГГГГ-ММ-ДД
2. Чтобы в проводнике Форточек файлы и папки сортировались в нормальном порядке дат и легко было ориентироваться когда количество файлов или папок достигнет нескольких десятков формат записи даты нужно применять ГГГГ-ММ-ДД
Дуплетом написали Проверять Ваш код, извините, нет времени. Тем более, что комментариев нет и цель не описана. А гадать по коду, чего Вы хотели добиться, требует достаточного внимания. Вы мой код проверили? Если я правильно понял и Ваша цель создать и сохранить в папке новую книгу с одним листом - копией листа "Сменное задание", переименованным в значение, указанное в ячейке D5, то всё должно работать.
Дуплетом написали Проверять Ваш код, извините, нет времени. Тем более, что комментариев нет и цель не описана. А гадать по коду, чего Вы хотели добиться, требует достаточного внимания. Вы мой код проверили? Если я правильно понял и Ваша цель создать и сохранить в папке новую книгу с одним листом - копией листа "Сменное задание", переименованным в значение, указанное в ячейке D5, то всё должно работать.Alex_ST
Alex_ST, В принцепе я добился того чего хотел на этой стадии, всем огромное спасибо. На следующей стадии надо будет обработать полученный результат т.е. собрать все данные с каждого листа и получить результат труда за месяц, но это уже другая история и тема, и думаю возможно прибегну к помощи бывалых. Ещё раз огромное спасибо.
Alex_ST, В принцепе я добился того чего хотел на этой стадии, всем огромное спасибо. На следующей стадии надо будет обработать полученный результат т.е. собрать все данные с каждого листа и получить результат труда за месяц, но это уже другая история и тема, и думаю возможно прибегну к помощи бывалых. Ещё раз огромное спасибо.Korobkow
[/vba]и проверил. Отлично работает. Не более четверти секунды. В пошаговом режиме проходили? Может быть у Вас там процедура на обработку каких-нибудь событий уходит? Попробуйте кроме обновлений экрана отключать ещё и обработку событий и пересчёт. Я вообще, используя Punto Switcher, задал в нём автозамены при вводе: app-false на With Application: .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False: .Calculation = xlManual: End With app-true на With Application: .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True: .Calculation = xlAutomatic: End With И теперь не парюсь вводом этих длинных команд по одной, а чаще всего ввожу их целым блоком. Ну, а если что-то отключать не надо, то после автозамены убираю лишнее.
Korobkow, я на работе файлы с макросами скачивать не могу. Но я сделал в начале своего крайнего кода замену папки назначения:[vba]
[/vba]и проверил. Отлично работает. Не более четверти секунды. В пошаговом режиме проходили? Может быть у Вас там процедура на обработку каких-нибудь событий уходит? Попробуйте кроме обновлений экрана отключать ещё и обработку событий и пересчёт. Я вообще, используя Punto Switcher, задал в нём автозамены при вводе: app-false на With Application: .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False: .Calculation = xlManual: End With app-true на With Application: .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True: .Calculation = xlAutomatic: End With И теперь не парюсь вводом этих длинных команд по одной, а чаще всего ввожу их целым блоком. Ну, а если что-то отключать не надо, то после автозамены убираю лишнее.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 25.09.2014, 10:21
Korobkow, Вы мою подпись видели? Более новыми Excel'ями я пользуюсь только если без этого никак не обойтись. [offtop]НЕНАВИЖУ риббон-интерфейс!!! Я хочу иметь возможность полностью перенастроить приложение под себя. Убрать не нужные мне кнопки и расставить свои кнопки со своими рисунками, вызывающие нужные мне процедуры в том месте, где мне удобно, а не разработчикам Мелко-Мягких.[/offtop]
Вы в пошаговом режиме пробовали проходить? Никуда не убегает на другие процедуры?
Korobkow, Вы мою подпись видели? Более новыми Excel'ями я пользуюсь только если без этого никак не обойтись. [offtop]НЕНАВИЖУ риббон-интерфейс!!! Я хочу иметь возможность полностью перенастроить приложение под себя. Убрать не нужные мне кнопки и расставить свои кнопки со своими рисунками, вызывающие нужные мне процедуры в том месте, где мне удобно, а не разработчикам Мелко-Мягких.[/offtop]
Вы в пошаговом режиме пробовали проходить? Никуда не убегает на другие процедуры?Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 25.09.2014, 11:21
Всё очень просто. В VBE встаёте курсором на любое место в тексте процедуры (между Sub и End Sub) и нажимаете F8 VBE переходит в режим пошагового выполнения процедуры (отладки). Готовая к выполнению команда подсвечивается в тексте программы жёлтым. Редактор ждёт Вашей следующей реакции. Вы можете ещё раз нажать на F8. Тогда подсвеченная команда выполнится и выделится следующая. А можете встать курсором на любую строку ниже выделенной жёлтым и по правой кнопке мыши (ПКМ) выбрать, например Run to Cursor. Тогда выполнится весь блок команд до команды, на которой стоит курсор и выполнение опять остановится. Это удобно для пропуска больших кусков кода, в работе которых Вы уверены. Для выхода из режима пошаговой отладки есть несколько путей: - продолжать нажимать F8 до выхода - нажать кнопку Reset на панели инструментов. Выполнение процедуры прервётся. - нажать кнопку Run Sub/UserForm. Выполнение процедуры продолжится до конца в обычном автоматическом режиме. Для наблюдения за состоянием переменных в режиме пошагового выполнения удобно вызвать на экран окно просмотра локальных переменных: View - Locals Window
Всё очень просто. В VBE встаёте курсором на любое место в тексте процедуры (между Sub и End Sub) и нажимаете F8 VBE переходит в режим пошагового выполнения процедуры (отладки). Готовая к выполнению команда подсвечивается в тексте программы жёлтым. Редактор ждёт Вашей следующей реакции. Вы можете ещё раз нажать на F8. Тогда подсвеченная команда выполнится и выделится следующая. А можете встать курсором на любую строку ниже выделенной жёлтым и по правой кнопке мыши (ПКМ) выбрать, например Run to Cursor. Тогда выполнится весь блок команд до команды, на которой стоит курсор и выполнение опять остановится. Это удобно для пропуска больших кусков кода, в работе которых Вы уверены. Для выхода из режима пошаговой отладки есть несколько путей: - продолжать нажимать F8 до выхода - нажать кнопку Reset на панели инструментов. Выполнение процедуры прервётся. - нажать кнопку Run Sub/UserForm. Выполнение процедуры продолжится до конца в обычном автоматическом режиме. Для наблюдения за состоянием переменных в режиме пошагового выполнения удобно вызвать на экран окно просмотра локальных переменных: View - Locals WindowAlex_ST
Дома скачал Ваш пример. Посмотрел. Огорчился, что часть моих советов проигнорирована 1. Почему Вы не используете декларацию Option Explicit ? Возможностью не назначать переменные пользуются либо в очень простых процедурах, либо очень опытные программисты. У меня, например, VBE автоматически её вставляет (там есть настройка). Очень помогает в отладке. 2. Я же рекомендовал:
Процедуру разместите в стандартном модуле, а не в модуле листа. Тогда в модуль листа новой книги не будет копироваться абсолютно не нужный в ней текст процедур.
А Вы её всё-таки засунули в модуль листа. Хоть я по привычке и написал процедуры в таком синтаксисе, что это не принципиально для работы, но зачем копировать макросы в новую книгу вместе с листом, я не понимаю.
А код в файле Маршрутный лист 1.xls у меня дома на старом ноутбуке с Вистой в Excel-2003 работает прекрасно и шустро. Так что у Вас что-то с Офисом, наверное. Давно встроенный автоматический поиск и устранение проблем делали?
А по файлу есть вопросы: - там какие-то внешние связи. Они нужны? - там огромная куча имён диапазонов. Часть из них битая (правда, это может быть из-за разрыва связей). Эти имена все нужны? (т.к. связи я обновить не смог, то и формулы при открытии файла заменились на значения и проверить я не могу) Лишние имена "ожиряют" файл и часто тормозят работу. Если часть имён не нужна, а по одному убивать в диспетчере имён лень, то вот Вам процедура для очистки:
[vba]
Код
Sub EraseNames() ' очистка списка имен диапазонов Dim nM As Name For Each nM In ActiveWorkbook.Names If nM.Visible Then If Not nM.Name Like "*!Print_Area" Then ' имена областей печати лучше оставить Select Case MsgBox("Удалить имя диапазона:" & vbCrLf & vbCrLf _ & nM.Name & nM.RefersTo, vbYesNoCancel + vbQuestion) Case vbYes: nM.Delete Case vbCancel: Exit Sub End Select End If Else If Not nM.Name Like "*!_FilterDatabase" Then nM.Delete ' удалить все скрытые имена диапазонов кроме фильтров End If Next nM End Sub
[/vba]
После глобальной чистки имён Ваш файл стал весить вместо былых 409 кило всего 84! А копии - вместо 340 - 28!
Дома скачал Ваш пример. Посмотрел. Огорчился, что часть моих советов проигнорирована 1. Почему Вы не используете декларацию Option Explicit ? Возможностью не назначать переменные пользуются либо в очень простых процедурах, либо очень опытные программисты. У меня, например, VBE автоматически её вставляет (там есть настройка). Очень помогает в отладке. 2. Я же рекомендовал:
Процедуру разместите в стандартном модуле, а не в модуле листа. Тогда в модуль листа новой книги не будет копироваться абсолютно не нужный в ней текст процедур.
А Вы её всё-таки засунули в модуль листа. Хоть я по привычке и написал процедуры в таком синтаксисе, что это не принципиально для работы, но зачем копировать макросы в новую книгу вместе с листом, я не понимаю.
А код в файле Маршрутный лист 1.xls у меня дома на старом ноутбуке с Вистой в Excel-2003 работает прекрасно и шустро. Так что у Вас что-то с Офисом, наверное. Давно встроенный автоматический поиск и устранение проблем делали?
А по файлу есть вопросы: - там какие-то внешние связи. Они нужны? - там огромная куча имён диапазонов. Часть из них битая (правда, это может быть из-за разрыва связей). Эти имена все нужны? (т.к. связи я обновить не смог, то и формулы при открытии файла заменились на значения и проверить я не могу) Лишние имена "ожиряют" файл и часто тормозят работу. Если часть имён не нужна, а по одному убивать в диспетчере имён лень, то вот Вам процедура для очистки:
[vba]
Код
Sub EraseNames() ' очистка списка имен диапазонов Dim nM As Name For Each nM In ActiveWorkbook.Names If nM.Visible Then If Not nM.Name Like "*!Print_Area" Then ' имена областей печати лучше оставить Select Case MsgBox("Удалить имя диапазона:" & vbCrLf & vbCrLf _ & nM.Name & nM.RefersTo, vbYesNoCancel + vbQuestion) Case vbYes: nM.Delete Case vbCancel: Exit Sub End Select End If Else If Not nM.Name Like "*!_FilterDatabase" Then nM.Delete ' удалить все скрытые имена диапазонов кроме фильтров End If Next nM End Sub
[/vba]
После глобальной чистки имён Ваш файл стал весить вместо былых 409 кило всего 84! А копии - вместо 340 - 28!Alex_ST
Вообщето этот файл весит 272Mb, просто он оч сильно урезан, от того и имена и битые связи. Этот файл обеспечивает некоторую деятельность предприятия, создал я его работая мастером из-за навалившихся на меня обязанностей я просто не успевал выполнять свою работу. Он и послужил подспорьем. Прошло уже 4 года и за это время он вырос вдвое. Я конечно со своей стороны был бы благодарен тому кто сможет его облегчить, но думаю чтобы взяться за такую работу надо быть очень сильным фанатом EXCEL т.к. интерес к нему будет основан только на голом интузиазме. Ссылка на него https://yadi.sk/d/UahhUSeibfiEj
Вообщето этот файл весит 272Mb, просто он оч сильно урезан, от того и имена и битые связи. Этот файл обеспечивает некоторую деятельность предприятия, создал я его работая мастером из-за навалившихся на меня обязанностей я просто не успевал выполнять свою работу. Он и послужил подспорьем. Прошло уже 4 года и за это время он вырос вдвое. Я конечно со своей стороны был бы благодарен тому кто сможет его облегчить, но думаю чтобы взяться за такую работу надо быть очень сильным фанатом EXCEL т.к. интерес к нему будет основан только на голом интузиазме. Ссылка на него https://yadi.sk/d/UahhUSeibfiEjKorobkow
В нем реализовано очень много возможностей EXCEl, Меня не покидает мыслиь разбить его на два разных документа, для ускорения его работоспособности, но делать етого пока не хочу, из-за комуникабельности. Ежели кто-то проявит интерес к файлу и моей задумке, выложу остальные файлы с которым работет и ещё должен заработать этот документ. Считаю что у EXCEL нет границ возможностей, есть тупик творческой мысли Я его все ровно добью просто с помощью ГУРУ было бы много веселей.
В нем реализовано очень много возможностей EXCEl, Меня не покидает мыслиь разбить его на два разных документа, для ускорения его работоспособности, но делать етого пока не хочу, из-за комуникабельности. Ежели кто-то проявит интерес к файлу и моей задумке, выложу остальные файлы с которым работет и ещё должен заработать этот документ. Считаю что у EXCEL нет границ возможностей, есть тупик творческой мысли Я его все ровно добью просто с помощью ГУРУ было бы много веселей.Korobkow
Сообщение отредактировал Korobkow - Пятница, 26.09.2014, 08:03
И Вы ещё удивляетесь, что он тормозит при работе макроса? Да такой файл должен не только открываться по несколько минут, но и задумываться по каждому Вашему мышкодвижению. Даже на очень мощном компе. Яндекс-Диск у нас на работе закрыт по требованиям безопасности, поэтому посмотреть файл не могу. Да и нет толку пытаться разобраться в чужом файле ТАКОГО размера, ведущемся уже несколько лет. Вы давно ему фитнесс проводили? Кажется, ЗДЕСЬ эту тему начинали, а ЗДЕСЬ" докуривали". Файл случайно не в общем доступе? Если да, то первым делом отмените общий доступ. Сохраните, а потом опять откройте общий достум. Сразу сильно похудеет. По именам пройтись опять же не помешает. Может быть там не нужные и битые накопились. Проверить на каждом листе рабочую область. Если выходит за границы размещения данных на листе, почистить. Уменьшить на листах количество графических объектов. Для нужных картинок применить сжатие. Поискать 0-мерные картинки. Они получаются из обычных после удаления строки или столбца, к ячейкам которого они были привязаны. После такого удаления графические объекты приобретают ширину или высоту 0 и становятся невидимыми. Но весят от этого не меньше, чем видимые. Найти 0D-графику поможет, например, эта процедура:
[vba]
Код
Sub Draws_0D_Select() ' выделить НА ЛИСТЕ все рисунки с нулевыми размерами Dim oDraw As Shape If ActiveSheet.DrawingObjects.Count = 0 Then: MsgBox "В выделенном диапазоне нет рисунков", , "Нет объектов!": Exit Sub For Each oDraw In ActiveSheet.DrawingObjects.ShapeRange If oDraw.Width = 0 Or oDraw.Height = 0 Then oDraw.Select (False) Next End Sub
[/vba]
Она их просто все выделит и уже Вам решать, нажимать Del или нет. А если всё-таки методы борьбы с "ожирением" не помогают, то надо думать о переходе хотя бы на Access.
И Вы ещё удивляетесь, что он тормозит при работе макроса? Да такой файл должен не только открываться по несколько минут, но и задумываться по каждому Вашему мышкодвижению. Даже на очень мощном компе. Яндекс-Диск у нас на работе закрыт по требованиям безопасности, поэтому посмотреть файл не могу. Да и нет толку пытаться разобраться в чужом файле ТАКОГО размера, ведущемся уже несколько лет. Вы давно ему фитнесс проводили? Кажется, ЗДЕСЬ эту тему начинали, а ЗДЕСЬ" докуривали". Файл случайно не в общем доступе? Если да, то первым делом отмените общий доступ. Сохраните, а потом опять откройте общий достум. Сразу сильно похудеет. По именам пройтись опять же не помешает. Может быть там не нужные и битые накопились. Проверить на каждом листе рабочую область. Если выходит за границы размещения данных на листе, почистить. Уменьшить на листах количество графических объектов. Для нужных картинок применить сжатие. Поискать 0-мерные картинки. Они получаются из обычных после удаления строки или столбца, к ячейкам которого они были привязаны. После такого удаления графические объекты приобретают ширину или высоту 0 и становятся невидимыми. Но весят от этого не меньше, чем видимые. Найти 0D-графику поможет, например, эта процедура:
[vba]
Код
Sub Draws_0D_Select() ' выделить НА ЛИСТЕ все рисунки с нулевыми размерами Dim oDraw As Shape If ActiveSheet.DrawingObjects.Count = 0 Then: MsgBox "В выделенном диапазоне нет рисунков", , "Нет объектов!": Exit Sub For Each oDraw In ActiveSheet.DrawingObjects.ShapeRange If oDraw.Width = 0 Or oDraw.Height = 0 Then oDraw.Select (False) Next End Sub
[/vba]
Она их просто все выделит и уже Вам решать, нажимать Del или нет. А если всё-таки методы борьбы с "ожирением" не помогают, то надо думать о переходе хотя бы на Access.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Пятница, 26.09.2014, 08:54
Проверил рисунков 0 нет, но база с чертежами есть они реально не маленькие - это и есть 1-я причина создания этого документа и без неё никак. Access изучал в институте, но забыл напроч, мысль перехода была , не нашел спеца по Access. надо строить базу, ложить пути и связи - я ни хрена не помню. Access - это идеальный вариант. А вот рабочую область - да надо проверить.
Проверил рисунков 0 нет, но база с чертежами есть они реально не маленькие - это и есть 1-я причина создания этого документа и без неё никак. Access изучал в институте, но забыл напроч, мысль перехода была , не нашел спеца по Access. надо строить базу, ложить пути и связи - я ни хрена не помню. Access - это идеальный вариант. А вот рабочую область - да надо проверить.Korobkow
Для выделения всех ячеек вокруг выделенного диапазона у меня лежит в заначке пара процедур:
[vba]
Код
Sub InvertSelection() '--------------------------------------------------------------------------------------- ' Procedure : InvertSelection ' Author : <img rel="usm" src="http://www.excelworld.ru/sml2/smile.gif" border="0" align="absmiddle" alt=":)" /> ' URL : http://www.planetaexcel.ru/forum.php?thread_id=14008 ' DateTime : 04.03.2010 00:17 ' Purpose : инвертировать Selection ' Notes : Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов. ' Notes : в процессе работы создаётся временный ЛИСТ в текущей книге, поэтому может не работать при защищенной структуре книги '--------------------------------------------------------------------------------------- If TypeName(Selection) <> "Range" Then Exit Sub With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With Dim selAddr As String: selAddr = Selection.Address With ActiveSheet With Worksheets.Add .Cells.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0" .Range(selAddr).ClearFormats selAddr = .Cells.SpecialCells(xlCellTypeAllFormatConditions).Address .Delete End With .Range(selAddr).Select End With With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With End Sub Sub InvertSelection2() '--------------------------------------------------------------------------------------- ' Procedure : InvertSelection ' Author : <img rel="usm" src="http://www.excelworld.ru/sml2/smile.gif" border="0" align="absmiddle" alt=":)" /> ' URL : http://www.planetaexcel.ru/forum.php?thread_id=14008 ' DateTime : 04.03.2010 00:17 ' Purpose : инвертировать Selection ' Notes : Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов. ' Notes : в процессе работы создаётся временная КНИГА, поэтому работает в том числе и при защищенной структуре книги '--------------------------------------------------------------------------------------- If TypeName(Selection) <> "Range" Then Exit Sub With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With Dim selAddr As String: selAddr = Selection.Address With ActiveSheet With Workbooks.Add With ActiveSheet .Cells.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0" .Range(selAddr).ClearFormats selAddr = .Cells.SpecialCells(xlCellTypeAllFormatConditions).Address End With .Close False End With .Range(selAddr).Select End With With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With End Sub
[/vba]
Хорошо помогают зачистке.
Для выделения всех ячеек вокруг выделенного диапазона у меня лежит в заначке пара процедур:
[vba]
Код
Sub InvertSelection() '--------------------------------------------------------------------------------------- ' Procedure : InvertSelection ' Author : <img rel="usm" src="http://www.excelworld.ru/sml2/smile.gif" border="0" align="absmiddle" alt=":)" /> ' URL : http://www.planetaexcel.ru/forum.php?thread_id=14008 ' DateTime : 04.03.2010 00:17 ' Purpose : инвертировать Selection ' Notes : Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов. ' Notes : в процессе работы создаётся временный ЛИСТ в текущей книге, поэтому может не работать при защищенной структуре книги '--------------------------------------------------------------------------------------- If TypeName(Selection) <> "Range" Then Exit Sub With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With Dim selAddr As String: selAddr = Selection.Address With ActiveSheet With Worksheets.Add .Cells.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0" .Range(selAddr).ClearFormats selAddr = .Cells.SpecialCells(xlCellTypeAllFormatConditions).Address .Delete End With .Range(selAddr).Select End With With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With End Sub Sub InvertSelection2() '--------------------------------------------------------------------------------------- ' Procedure : InvertSelection ' Author : <img rel="usm" src="http://www.excelworld.ru/sml2/smile.gif" border="0" align="absmiddle" alt=":)" /> ' URL : http://www.planetaexcel.ru/forum.php?thread_id=14008 ' DateTime : 04.03.2010 00:17 ' Purpose : инвертировать Selection ' Notes : Работает со всеми ячейками листа, поддерживается выделение нескольких несмежных диапазонов. ' Notes : в процессе работы создаётся временная КНИГА, поэтому работает в том числе и при защищенной структуре книги '--------------------------------------------------------------------------------------- If TypeName(Selection) <> "Range" Then Exit Sub With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With Dim selAddr As String: selAddr = Selection.Address With ActiveSheet With Workbooks.Add With ActiveSheet .Cells.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0" .Range(selAddr).ClearFormats selAddr = .Cells.SpecialCells(xlCellTypeAllFormatConditions).Address End With .Close False End With .Range(selAddr).Select End With With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With End Sub
Что Вы имели в виду? Рабочего диапазона на листе ВООБЩЕ не быть не может. Даже на абсолютно новом только что созданном листе это ячейка А1
А вот форматирование, особенно УФ, целиком строки или столбца вместо только нужного рабочего диапазона или протянутые "до конца листа" формулы, даже если они не выводят ВИДИМЫХ значений, - это не обоснованное увеличение рабочего диапазона - одна из причин "ожирения".
На листе встаньте на А1 и нажмите Ctrl+Shift+End. Выделится рабочий диапазон. Если зона выделения намного больше размеров диапазона используемых данных, то надо чистить. К стати, о наличии и размерах рабочего диапазона легко судить по размеру ползунка прокрутки листа и по тому, насколько ниже или правее последней ячейки данных прокручивается лист если его протянуть за бегунок до конца. Просто выделить рабочий диапазон можно ещё и простейшей процедурой: [vba]
Код
Sub UsedRange_Select(): ActiveSheet.UsedRange.Select: End Sub
Что Вы имели в виду? Рабочего диапазона на листе ВООБЩЕ не быть не может. Даже на абсолютно новом только что созданном листе это ячейка А1
А вот форматирование, особенно УФ, целиком строки или столбца вместо только нужного рабочего диапазона или протянутые "до конца листа" формулы, даже если они не выводят ВИДИМЫХ значений, - это не обоснованное увеличение рабочего диапазона - одна из причин "ожирения".
На листе встаньте на А1 и нажмите Ctrl+Shift+End. Выделится рабочий диапазон. Если зона выделения намного больше размеров диапазона используемых данных, то надо чистить. К стати, о наличии и размерах рабочего диапазона легко судить по размеру ползунка прокрутки листа и по тому, насколько ниже или правее последней ячейки данных прокручивается лист если его протянуть за бегунок до конца. Просто выделить рабочий диапазон можно ещё и простейшей процедурой: [vba]
Код
Sub UsedRange_Select(): ActiveSheet.UsedRange.Select: End Sub