Подскажите пожалуйста, есть большой макрос, который проверяет выбранные ячейки на наличие в них определенного текста. Как можно уменьшить этот макрос в плане поставить диапазон ячеек для проверки? Плюс к этому, можно сделать автозапуск этого макроса, чтобы после изменения ячеек, не обязательно этих, а возможно после любых изменений в книге(листе) макрос автоматически выполнялся. Т.е. я поменял значение в ячейке, или вообще в листе что-то произошло и выполнилось действие макроса. Прикрепил текстовый файл с макросом. Заранее спасибо!
Подскажите пожалуйста, есть большой макрос, который проверяет выбранные ячейки на наличие в них определенного текста. Как можно уменьшить этот макрос в плане поставить диапазон ячеек для проверки? Плюс к этому, можно сделать автозапуск этого макроса, чтобы после изменения ячеек, не обязательно этих, а возможно после любых изменений в книге(листе) макрос автоматически выполнялся. Т.е. я поменял значение в ячейке, или вообще в листе что-то произошло и выполнилось действие макроса. Прикрепил текстовый файл с макросом. Заранее спасибо!Matthew
он и так там поставлен, проверяется не весь лист. Возможно Вы имели ввиду реакцию в определенном диапазоне, но тогда это противоречит условию "во-вторых". По теме "уменьшить" - ну занесите в массив проверяемые адреса: If .Cells(17, 4) ... If .Cells(18, 4) ... и т.д. в стиле А1, адреса-то одни и те же. во второй массив через вертикальный табулятор занесите строки с начальниками и адреса строк для скрытия. И перебирайте цикл в цикле. Будет короче, хоть и не так понятно
он и так там поставлен, проверяется не весь лист. Возможно Вы имели ввиду реакцию в определенном диапазоне, но тогда это противоречит условию "во-вторых". По теме "уменьшить" - ну занесите в массив проверяемые адреса: If .Cells(17, 4) ... If .Cells(18, 4) ... и т.д. в стиле А1, адреса-то одни и те же. во второй массив через вертикальный табулятор занесите строки с начальниками и адреса строк для скрытия. И перебирайте цикл в цикле. Будет короче, хоть и не так понятно KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim Dic As Object, K With Application: .ScreenUpdating = 0: .EnableEvents = 0 With Sheets("Служебная записка") Set Dic = CreateObject("Scripting.Dictionary") Dic("начальнику ОРСА Сиротскому М.С.,") = "38:39" Dic("начальнику ОРПО Чекалину Л.В.,") = "42:43" Dic("начальнику КТО Лужецкому В.Н.,") = "46:47" Dic("начальнику ТО Смирнову М.Н.,") = "50:51" Dic("начальнику ЭТО Кондратьеву Л.В.,") = "54:55" Dic("начальнику ПНРиТО Хлынину М.В.,") = "58:59" .Range(Join(Dic.Items, ",")).EntireRow.Hidden = True For Each K In Dic.keys Select Case K Case .[D17], .[D18], .[D19], .[Q17], .[Q18], .[Q19] .Rows(Dic(K)).Hidden = False End Select Next Set Dic = Nothing End With .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
[/vba]
если правильно понял... в модуль ЭтаКнига [vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim Dic As Object, K With Application: .ScreenUpdating = 0: .EnableEvents = 0 With Sheets("Служебная записка") Set Dic = CreateObject("Scripting.Dictionary") Dic("начальнику ОРСА Сиротскому М.С.,") = "38:39" Dic("начальнику ОРПО Чекалину Л.В.,") = "42:43" Dic("начальнику КТО Лужецкому В.Н.,") = "46:47" Dic("начальнику ТО Смирнову М.Н.,") = "50:51" Dic("начальнику ЭТО Кондратьеву Л.В.,") = "54:55" Dic("начальнику ПНРиТО Хлынину М.В.,") = "58:59" .Range(Join(Dic.Items, ",")).EntireRow.Hidden = True For Each K In Dic.keys Select Case K Case .[D17], .[D18], .[D19], .[Q17], .[Q18], .[Q19] .Rows(Dic(K)).Hidden = False End Select Next Set Dic = Nothing End With .ScreenUpdating = 1: .EnableEvents = 1: End With End Sub
Ребят, я в этом деле новичок (сильно сказано), попробовал, не получается, при изменении данного диапазона все равно приходится каждый раз выполнять макрос. Скину файл. Есть кстати еще вопрос, по этому же файлу, но он вроде сложнее. Возможно косяк в том, что в выбранном диапазоне стоит проверка данных, т.е. данные вставляю с выпадающего меню. Покажите ошибки, подскажите где должен быть текст макроса, всё в одном модуле или в отдельном и имеет ли это значение. Заранее большое спасибо.
Ребят, я в этом деле новичок (сильно сказано), попробовал, не получается, при изменении данного диапазона все равно приходится каждый раз выполнять макрос. Скину файл. Есть кстати еще вопрос, по этому же файлу, но он вроде сложнее. Возможно косяк в том, что в выбранном диапазоне стоит проверка данных, т.е. данные вставляю с выпадающего меню. Покажите ошибки, подскажите где должен быть текст макроса, всё в одном модуле или в отдельном и имеет ли это значение. Заранее большое спасибо.
Ради любопытства посмотрел тему и файл. И не понял. Как заполняется "Служебная записка". В графе "кому" шесть полей для заполнения. И в коде проверка этих 6 полей. Записка заполняется сразу шестерым начальникам? Хотелось бы посмотреть заполненный документ. Да и вообще, понять бы смысл этой задачи, возможно у нее есть другое решение. Без макросов. Например такое:
Ради любопытства посмотрел тему и файл. И не понял. Как заполняется "Служебная записка". В графе "кому" шесть полей для заполнения. И в коде проверка этих 6 полей. Записка заполняется сразу шестерым начальникам? Хотелось бы посмотреть заполненный документ. Да и вообще, понять бы смысл этой задачи, возможно у нее есть другое решение. Без макросов. Например такое:Wasilich
Ребят, я в этом деле новичок (сильно сказано), попробовал, не получается, при изменении данного диапазона все равно приходится каждый раз выполнять макрос. Скину файл. Есть кстати еще вопрос, по этому же файлу, но он вроде сложнее. Возможно косяк в том, что в выбранном диапазоне стоит проверка данных, т.е. данные вставляю с выпадающего меню. Покажите ошибки, подскажите где должен быть текст макроса, всё в одном модуле или в отдельном и имеет ли это значение. Заранее большое спасибо.
Положил код куда нужно, что бы срабатывал при каждом изменении. Другие модули и коды удалил, что бы понятно было что именно за это отвечает. + сделал немного по красивее с изменением высоты строк (убирает лишние отступы и пробелы если выбираются люди через одного). По другой части вопроса. Если честно не понял и примера нет посмотреть =)
Ребят, я в этом деле новичок (сильно сказано), попробовал, не получается, при изменении данного диапазона все равно приходится каждый раз выполнять макрос. Скину файл. Есть кстати еще вопрос, по этому же файлу, но он вроде сложнее. Возможно косяк в том, что в выбранном диапазоне стоит проверка данных, т.е. данные вставляю с выпадающего меню. Покажите ошибки, подскажите где должен быть текст макроса, всё в одном модуле или в отдельном и имеет ли это значение. Заранее большое спасибо.
Положил код куда нужно, что бы срабатывал при каждом изменении. Другие модули и коды удалил, что бы понятно было что именно за это отвечает. + сделал немного по красивее с изменением высоты строк (убирает лишние отступы и пробелы если выбираются люди через одного). По другой части вопроса. Если честно не понял и примера нет посмотреть =)Timber_Wolf
Ради любопытства посмотрел тему и файл. И не понял. Как заполняется "Служебная записка". В графе "кому" шесть полей для заполнения. И в коде проверка этих 6 полей. Записка заполняется сразу шестерым начальникам? Хотелось бы посмотреть заполненный документ. yes
Ради любопытства посмотрел тему и файл. И не понял. Как заполняется "Служебная записка". В графе "кому" шесть полей для заполнения. И в коде проверка этих 6 полей. Записка заполняется сразу шестерым начальникам? Хотелось бы посмотреть заполненный документ. yes
Смешно то что начальников 7 =)) А полей 6 ))) Timber_Wolf