Профессиональные приемы работы в Microsoft Excel

Обмен опытом => Microsoft Excel => Тема начата: 0mega от 23.12.2017, 07:47

Название: Макрос. Очистка ячеек по условию
Отправлено: 0mega от 23.12.2017, 07:47
Всех с наступающим.

рабочая книга может содержать от 3 до 12 листов
1 лист - 1 таблица
Кол-во строк в таблицах: 12 -150
Кол-во столбцов:  25-30
Row 1:6 это шапка, таблица начинается с 7-ой строки
Макрос должен проверить таблицы на всех листах
Оставить все ячейки с формулами и очистить содержимое ячеек без формул (форматирование,  УФ, шрифт, размер ячеек не изменять)

P.S.
если возможно , пусть макрос обрабатывает все открытые книги ( Book1, Book2  всего 4 шт)


Название: Re: Макрос. Очистка ячеек по условию
Отправлено: Шпец Докапыч от 27.12.2017, 12:57
Sub valClear()
    On Error Resume Next
    For Each wb In Application.Workbooks
        If wb.Name Like "Book[1-4].*" Then
            For Each sh In wb.Sheets
                sh.Range("A7:AD156").SpecialCells(2, 23).ClearContents
            Next
        End If
    Next
End Sub
Название: Re: Макрос. Очистка ячеек по условию
Отправлено: 0mega от 27.12.2017, 14:24
Шпец Докапыч, здравствуйте

спасибо за ответ

Book1... Book4 - это условные имена
Настояшие имена не имеют нумерации. Как прописать имена  списком: "Book", "Test", " Work", "Учет" ?
Какое назначение "*"
"Book[1-4].*"
Название: Re: Макрос. Очистка ячеек по условию
Отправлено: boa от 27.12.2017, 15:21
Добавьте еще один цикл по списку имен

Sub valClear()
    On Error Resume Next
    For Each wb In Application.Workbooks
      For Each SearchName In [{"Book", "Test", " Work", "Учет"}]
        If wb.Name Like SearchName & ".*" Then
            For Each sh In wb.Sheets
                sh.Range("A7:AD156").SpecialCells(2, 23).ClearContents
            Next
        End If
      Next
    Next
End Sub
Название: Re: Макрос. Очистка ячеек по условию
Отправлено: 0mega от 29.12.2017, 01:20
boa. спасибо
а  ".*" - это что и как ?
Название: Re: Макрос. Очистка ячеек по условию
Отправлено: vikttur от 29.12.2017, 01:24
Это точка и любое количество (от 0 и больше) знаков после нее
Название: Re: Макрос. Очистка ячеек по условию
Отправлено: 0mega от 29.12.2017, 16:32
спасибо, всех с наступающим