Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как средствами VBA вставить код в модуль листа? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как средствами VBA вставить код в модуль листа?
machodg Дата: Пятница, 20.11.2015, 11:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго всем дня!

В Personal.xlsb имеется макрос для создания новой книги с одним листом, содержащим копию только данных исходного:

[vba]
Код
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
[/vba]

Как добавить в этот макрос следующий код, добавляющий расширенный фильтр с поиском по шаблону, который прописывался бы в модуль этого листа:

[vba]
Код
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
[/vba]

Не знаю как создать модуль листа средствами VBA и прописать в него код автоматический.

Заранее благодарен за ответ.
 
Ответить
СообщениеДоброго всем дня!

В Personal.xlsb имеется макрос для создания новой книги с одним листом, содержащим копию только данных исходного:

[vba]
Код
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
[/vba]

Как добавить в этот макрос следующий код, добавляющий расширенный фильтр с поиском по шаблону, который прописывался бы в модуль этого листа:

[vba]
Код
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
[/vba]

Не знаю как создать модуль листа средствами VBA и прописать в него код автоматический.

Заранее благодарен за ответ.

Автор - machodg
Дата добавления - 20.11.2015 в 11:53
Manyasha Дата: Пятница, 20.11.2015, 13:01 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
machodg, так попробуйте
[vba]
Код
Sub insertCode()
    Set objVBProj = ActiveWorkbook.VBProject
    Set objVBComp = objVBProj.VBComponents("Лист1")
    Set objCodeMod = objVBComp.CodeModule
    With objCodeMod
        i = .CreateEventProc("Change", "Worksheet"): i = i + 1
        .InsertLines i, "If Not Intersect(Target, Range(Cells(1, 1), Cells(2, 1))) Is Nothing Then": i = i + 1
        .InsertLines i, "On Error Resume Next": i = i + 1
        .InsertLines i, "ActiveSheet.ShowAllData": i = i + 1
        .InsertLines i, "Range(""A5"").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(""A1"").CurrentRegion": i = i + 1
        .InsertLines i, "End If": i = i + 1
        .InsertLines i, "Range(""A2"").Select"
    End With
End Sub
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеmachodg, так попробуйте
[vba]
Код
Sub insertCode()
    Set objVBProj = ActiveWorkbook.VBProject
    Set objVBComp = objVBProj.VBComponents("Лист1")
    Set objCodeMod = objVBComp.CodeModule
    With objCodeMod
        i = .CreateEventProc("Change", "Worksheet"): i = i + 1
        .InsertLines i, "If Not Intersect(Target, Range(Cells(1, 1), Cells(2, 1))) Is Nothing Then": i = i + 1
        .InsertLines i, "On Error Resume Next": i = i + 1
        .InsertLines i, "ActiveSheet.ShowAllData": i = i + 1
        .InsertLines i, "Range(""A5"").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range(""A1"").CurrentRegion": i = i + 1
        .InsertLines i, "End If": i = i + 1
        .InsertLines i, "Range(""A2"").Select"
    End With
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 20.11.2015 в 13:01
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!