Всем привет. Есть таблица с данными.. большая таблица. Когда в ней приходится что то искать, то в разных столбцах фильтрую по нужным документам и пользуюсь таблицей. Но это не очень удобно и занимает больше времени, чем хотелось бы. Хочу сделать для нескольких столбцов юзерформу (одну), в которой буду ставить флажки, по которым будет включаться фильтры по этим столбцам. Нарисовать форму для меня проблемы нет, а вот с макросами засада. Допустит записал я макрорекодером макрос фильтра по одному документу и "прицепил" его к флажку на юзерформу. Но как сделать, чтобы если я обратно убрал флажок все возвращалось на шаг назад? или как сделать фильтр, если я два флажка поставил? То тогда фильтр по двум документам должен сработать.. файл рабочий выложить не могу. Может достаточно свою задачу расписал..если нет, то сделаю пример.
Всем привет. Есть таблица с данными.. большая таблица. Когда в ней приходится что то искать, то в разных столбцах фильтрую по нужным документам и пользуюсь таблицей. Но это не очень удобно и занимает больше времени, чем хотелось бы. Хочу сделать для нескольких столбцов юзерформу (одну), в которой буду ставить флажки, по которым будет включаться фильтры по этим столбцам. Нарисовать форму для меня проблемы нет, а вот с макросами засада. Допустит записал я макрорекодером макрос фильтра по одному документу и "прицепил" его к флажку на юзерформу. Но как сделать, чтобы если я обратно убрал флажок все возвращалось на шаг назад? или как сделать фильтр, если я два флажка поставил? То тогда фильтр по двум документам должен сработать.. файл рабочий выложить не могу. Может достаточно свою задачу расписал..если нет, то сделаю пример.ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Сообщение отредактировал ovechkin1973 - Суббота, 01.12.2018, 19:55
пример сделал. кнопкой буду в реальном файле запускать форму, она будет значительно больше (флажков на ней будет больше). Документов в столбце D в реальном файле больше сотни. Для работы мне нужно фильтровать не более, чем по 15-20 документам. Столько флажков и сделаю. Нужно чтобы фильтр по этим документам включался при включении флажка. Если включил несколько флажков, то соответственно по этим документам фильтр работает. Если все флажки сняты, то фильтр полностью по столбцу D отключается.
пример сделал. кнопкой буду в реальном файле запускать форму, она будет значительно больше (флажков на ней будет больше). Документов в столбце D в реальном файле больше сотни. Для работы мне нужно фильтровать не более, чем по 15-20 документам. Столько флажков и сделаю. Нужно чтобы фильтр по этим документам включался при включении флажка. Если включил несколько флажков, то соответственно по этим документам фильтр работает. Если все флажки сняты, то фильтр полностью по столбцу D отключается.ovechkin1973
parovoznik, мда.. в моем файле есть скрытый лист, куда часто пишу свои хотелки по доработки файла.. То, что предложили вы - тоже есть, только в моем случаю я более сложную задачу поставил и поэтому даже пока о реализации ее не заикаюсь. Спасибо! Сохраню в копилку и обязательно попробую применить на своем файле.. хотя код для меня пока не "подъемный"...
parovoznik, мда.. в моем файле есть скрытый лист, куда часто пишу свои хотелки по доработки файла.. То, что предложили вы - тоже есть, только в моем случаю я более сложную задачу поставил и поэтому даже пока о реализации ее не заикаюсь. Спасибо! Сохраню в копилку и обязательно попробую применить на своем файле.. хотя код для меня пока не "подъемный"...ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
boa, ваш вариант самое то! попробую в первую очередь его приспособить к своему файлу..
Приспособить фильтр по документам получилось.. сделал конечно не представляя, как работает...но цель достигнута! По дате пока не приспособил фильтр.. буду на работе сразу на рабочем файле пробовать. Еще раз спасибо за помощь!
boa, ваш вариант самое то! попробую в первую очередь его приспособить к своему файлу..
Приспособить фильтр по документам получилось.. сделал конечно не представляя, как работает...но цель достигнута! По дате пока не приспособил фильтр.. буду на работе сразу на рабочем файле пробовать. Еще раз спасибо за помощь!ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
ovechkin1973, Обратите внимание на имена чекбоксов и то, что в фильтр подставляется капчя чекбокса, т.е. то, что в нем написано. Лишний пробел или запятая и т.п. изменят результат
ovechkin1973, Обратите внимание на имена чекбоксов и то, что в фильтр подставляется капчя чекбокса, т.е. то, что в нем написано. Лишний пробел или запятая и т.п. изменят результатboa
Обратите внимание на имена чекбоксов и то, что в фильтр подставляется капчя чекбокса, т.е. то, что в нем написано. Лишний пробел или запятая и т.п. изменят результат
Обратите внимание на имена чекбоксов и то, что в фильтр подставляется капчя чекбокса, т.е. то, что в нем написано. Лишний пробел или запятая и т.п. изменят результат
Уже обратил.. учусь на своих ошибках...ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
boa, пробовал немного доработать форму и код.. получился затык. Я на форме флажки для столбца "В" нарисовал, код вроде по аналогии написал, но когда ставлю флажок - все строки исчезают. Вроде все проверил - имена в чекбоксе и фильтре идентичны.. Что не так делаю?
Private Sub ChBox_Type1_Click(): filterType: End Sub Private Sub ChBox_Type2_Click(): filterType: End Sub Private Sub ChBox_Type3_Click(): filterType: End Sub Private Sub ChBox_Type4_Click(): filterType: End Sub Private Sub ChBox_Type5_Click(): filterType: End Sub Private Sub ChBox_Type6_Click(): filterType: End Sub Private Sub ChBox_Type7_Click(): filterType: End Sub
Private Sub ChBox_Year16_Click(): filterYear: End Sub Private Sub ChBox_Year17_Click(): filterYear: End Sub Private Sub ChBox_Year18_Click(): filterYear: End Sub
Private Sub ChBox_TypeB1_Click(): filterType: End Sub Private Sub ChBox_TypeB2_Click(): filterType: End Sub Private Sub ChBox_TypeB3_Click(): filterType: End Sub Private Sub ChBox_TypeB4_Click(): filterType: End Sub Private Sub ChBox_TypeB5_Click(): filterType: End Sub Private Sub ChBox_TypeB6_Click(): filterType: End Sub Private Sub ChBox_TypeB7_Click(): filterType: End Sub Private Sub ChBox_TypeB8_Click(): filterType: End Sub Private Sub ChBox_TypeB9_Click(): filterType: End Sub
Private Sub filterTypeB() 'Фильтр по столбцу "B" Dim Ch As Control Dim myArr(), i&
For Each Ch In Me.Controls If InStr(Ch.Name, "Type") And Ch.Value Then i = i + 1 ReDim Preserve myArr(1 To i) myArr(i) = Ch.Caption End If Next If i > 0 Then ActiveSheet.UsedRange.AutoFilter Field:=2, _ Operator:=xlFilterValues, _ Criteria1:=myArr Else ActiveSheet.UsedRange.AutoFilter Field:=2 End If End Sub
Private Sub filterType() 'Фильтр по столбцу "М" Dim Ch As Control Dim myArr(), i&
For Each Ch In Me.Controls If InStr(Ch.Name, "Type") And Ch.Value Then i = i + 1 ReDim Preserve myArr(1 To i) myArr(i) = Ch.Caption End If Next If i > 0 Then ActiveSheet.UsedRange.AutoFilter Field:=13, _ Operator:=xlFilterValues, _ Criteria1:=myArr Else ActiveSheet.UsedRange.AutoFilter Field:=13 End If End Sub
Private Sub filterYear() 'Фильтр по столбцу "G" Dim Ch As Control Dim myArr(), i&
For Each Ch In Me.Controls If InStr(Ch.Name, "Year") And Ch.Value Then i = i + 2 ReDim Preserve myArr(1 To i) myArr(i - 1) = 0 myArr(i) = "12/31/" & Ch.Caption End If Next If i > 0 Then ActiveSheet.UsedRange.AutoFilter Field:=7, _ Operator:=xlFilterValues, _ Criteria2:=myArr Else ActiveSheet.UsedRange.AutoFilter Field:=7 End If End Sub
[/vba]
boa, пробовал немного доработать форму и код.. получился затык. Я на форме флажки для столбца "В" нарисовал, код вроде по аналогии написал, но когда ставлю флажок - все строки исчезают. Вроде все проверил - имена в чекбоксе и фильтре идентичны.. Что не так делаю?
Private Sub ChBox_Type1_Click(): filterType: End Sub Private Sub ChBox_Type2_Click(): filterType: End Sub Private Sub ChBox_Type3_Click(): filterType: End Sub Private Sub ChBox_Type4_Click(): filterType: End Sub Private Sub ChBox_Type5_Click(): filterType: End Sub Private Sub ChBox_Type6_Click(): filterType: End Sub Private Sub ChBox_Type7_Click(): filterType: End Sub
Private Sub ChBox_Year16_Click(): filterYear: End Sub Private Sub ChBox_Year17_Click(): filterYear: End Sub Private Sub ChBox_Year18_Click(): filterYear: End Sub
Private Sub ChBox_TypeB1_Click(): filterType: End Sub Private Sub ChBox_TypeB2_Click(): filterType: End Sub Private Sub ChBox_TypeB3_Click(): filterType: End Sub Private Sub ChBox_TypeB4_Click(): filterType: End Sub Private Sub ChBox_TypeB5_Click(): filterType: End Sub Private Sub ChBox_TypeB6_Click(): filterType: End Sub Private Sub ChBox_TypeB7_Click(): filterType: End Sub Private Sub ChBox_TypeB8_Click(): filterType: End Sub Private Sub ChBox_TypeB9_Click(): filterType: End Sub
Private Sub filterTypeB() 'Фильтр по столбцу "B" Dim Ch As Control Dim myArr(), i&
For Each Ch In Me.Controls If InStr(Ch.Name, "Type") And Ch.Value Then i = i + 1 ReDim Preserve myArr(1 To i) myArr(i) = Ch.Caption End If Next If i > 0 Then ActiveSheet.UsedRange.AutoFilter Field:=2, _ Operator:=xlFilterValues, _ Criteria1:=myArr Else ActiveSheet.UsedRange.AutoFilter Field:=2 End If End Sub
Private Sub filterType() 'Фильтр по столбцу "М" Dim Ch As Control Dim myArr(), i&
For Each Ch In Me.Controls If InStr(Ch.Name, "Type") And Ch.Value Then i = i + 1 ReDim Preserve myArr(1 To i) myArr(i) = Ch.Caption End If Next If i > 0 Then ActiveSheet.UsedRange.AutoFilter Field:=13, _ Operator:=xlFilterValues, _ Criteria1:=myArr Else ActiveSheet.UsedRange.AutoFilter Field:=13 End If End Sub
Private Sub filterYear() 'Фильтр по столбцу "G" Dim Ch As Control Dim myArr(), i&
For Each Ch In Me.Controls If InStr(Ch.Name, "Year") And Ch.Value Then i = i + 2 ReDim Preserve myArr(1 To i) myArr(i - 1) = 0 myArr(i) = "12/31/" & Ch.Caption End If Next If i > 0 Then ActiveSheet.UsedRange.AutoFilter Field:=7, _ Operator:=xlFilterValues, _ Criteria2:=myArr Else ActiveSheet.UsedRange.AutoFilter Field:=7 End If End Sub
Вот я теряюсь в догадках — зачем натягивать сову на глобус и тащить кучу чекбоксов (которых к тому же с каждым годом будет становиться больше) туда, где напрашивается листбокс и кнопка Сброс?
Вот я теряюсь в догадках — зачем натягивать сову на глобус и тащить кучу чекбоксов (которых к тому же с каждым годом будет становиться больше) туда, где напрашивается листбокс и кнопка Сброс?StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Вот я теряюсь в догадках — зачем натягивать сову на глобус и тащить кучу чекбоксов (которых к тому же с каждым годом будет становиться больше) туда, где напрашивается листбокс и кнопка Сброс?
Понял только про сову и глобус.. Листбокс тоже понятно.. А вот какое решение конкретно - нет
Вот я теряюсь в догадках — зачем натягивать сову на глобус и тащить кучу чекбоксов (которых к тому же с каждым годом будет становиться больше) туда, где напрашивается листбокс и кнопка Сброс?
Понял только про сову и глобус.. Листбокс тоже понятно.. А вот какое решение конкретно - нетovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.