В 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 и прописать в него код автоматический.
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]
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