Страницы: 1
RSS
Как с помощью макроса вставить код в модуль листа
 
Доброго всем дня!

В Personal.xlsb имеется макрос для создания новой книги с одним листом, содержащим копию только данных исходного:
Код
Sub Makros1 ()
  Dim CurW As Window
  Dim TempW As Window
       Set CurW = ActiveWindow
       Set TempW = ActiveWorkbook.NewWindow
       CurW.SelectedSheets.Copy
       TempW.Close
  ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value
End Sub

Как добавить в этот макрос следующий код, добавляющий расширенный фильтр с поиском по шаблону, который прописывался бы в модуль этого листа:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Range(Cells(1, 1), Cells(2, 1))) Is Nothing Then
        On Error Resume Next
        ActiveSheet.ShowAllData
        Range("A5").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1").CurrentRegion
    End If
Range("A2").Select
End Sub

Заранее благодарен за ответ
Изменено: machodg - 20.11.2015 10:37:05
 
machodg, здравия. Чтобы с чистой совестью, не ожидая пинков со стороны модераторов, Вам помогать, зайдите в своё сообщение, оформите, как заведено здесь, код выделив и нажав на ниже указанную кнопочку:

Спасибо.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
machodg написал:
имеется макрос для создания новой книги с одним листом
Вообще-то строка CurW.SelectedSheets.Copy намекает на то, что в новую книгу может быть скопировано несколько листов, если выделено несколько листов.
Но формулы в значения преобразуются только для одного листа. Для копирования одного листа этот макрос можно сделать в 2 строки:
Код
Sub Makros1()
  ActiveSheet.Copy
  ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value
End Sub

Что касается добавления кода макросом - я бы не советовал это делать. Сделайте шаблон листа с кодом в Personal, копируйте его в новую книгу и заполняйте данными.
 
JayBhagavan   Спасибо. Учту на будущее.
 
Цитата
Казанский написал:
Что касается добавления кода макросом - я бы не советовал это делать.
Спасибо за ответ.
А почему не советуете?
Да действительно, в макросе есть возможность копирования нескольких листов. Был задуман универсальный макрос. Но в каждый данный момнт у меня активирован только один лист и нет проблем.
Цитата
Казанский написал:
Сделайте шаблон листа с кодом в Personal, копируйте его в новую книгу и заполняйте данными.
Дело в том, что листов очень много и надо делать отчеты по каждому листу отдельно только с данными с возможностью поиска в длинном списке наименований. Каждый раз копировать данные в шаблон вручную - минимум неудобно. Хочу автоматизировать весь процесс нажатием на одну кнопку. Не знаю как создать модуль листа средствами VBA и прописать в него код автоматический.
Изменено: machodg - 20.11.2015 12:00:30
 
Модуль листа создается сам вместе с листом. А код в него можно записать так: Как добавить код процедуры программно, скопировать модуль
Там есть пример кода как раз для Worksheet_Change.
Но я соглашусь с Казанским - не лучшая это идея. Наверное, имеет смысл оптимизировать как-то свои коды таким образом, чтобы не пришлось модули создавать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist  
Большое спасибо.
Посмотрел. Думаю то что надо. Попробую и отвечу.
Страницы: 1
Наверх