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

Вход

Регистрация

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

 

= Мир MS Excel/Удобный автофильтр - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Готовые решения » Удобный автофильтр (Удобный автофильтр по критерию "содержит")
Удобный автофильтр
airwaves18244 Дата: Четверг, 17.01.2013, 20:19 | Сообщение № 21
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

RAN, а как задать ввод этих 2,3,4...?) но думаю опять отправите меня лесом учить матчасть)))
 
Ответить
СообщениеRAN, а как задать ввод этих 2,3,4...?) но думаю опять отправите меня лесом учить матчасть)))

Автор - airwaves18244
Дата добавления - 17.01.2013 в 20:19
Alex_ST Дата: Четверг, 17.01.2013, 20:57 | Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Цитата (RAN)
Правда "the best!!!" тут не рулит...
[offtop]Ну, если это не "the best!!!" , то это не для меня biggrin (RIBBON INTERFACE MUST DIE!)
И вообще, в таком случае не замусоривайте топик! Здесь готовые решения, а не разработка biggrin biggrin biggrin [/offtop]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Цитата (RAN)
Правда "the best!!!" тут не рулит...
[offtop]Ну, если это не "the best!!!" , то это не для меня biggrin (RIBBON INTERFACE MUST DIE!)
И вообще, в таком случае не замусоривайте топик! Здесь готовые решения, а не разработка biggrin biggrin biggrin [/offtop]

Автор - Alex_ST
Дата добавления - 17.01.2013 в 20:57
VictorM Дата: Пятница, 08.02.2013, 10:06 | Сообщение № 23
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 161
Репутация: 27 ±
Замечаний: 0% ±

Случайно увидел эту тему, почитал и понял, чего мне не хватало в моей базе smile
Тут же применил, все работает "на ура".
Спасибо!
 
Ответить
СообщениеСлучайно увидел эту тему, почитал и понял, чего мне не хватало в моей базе smile
Тут же применил, все работает "на ура".
Спасибо!

Автор - VictorM
Дата добавления - 08.02.2013 в 10:06
Alex_ST Дата: Пятница, 08.02.2013, 16:12 | Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Юзайте пожалуйста.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЮзайте пожалуйста.

Автор - Alex_ST
Дата добавления - 08.02.2013 в 16:12
Денис Дата: Вторник, 26.02.2013, 11:06 | Сообщение № 25
Группа: Гости
Действительно удобный фильтр!
Но никак не могу приспособить его для своего файла.
Ситуация следующая:
Из первого листа книги макросом создается новый лист с именем (база + дата) на котором формируется таблица с данными по выборке.
Поместил Ваш удобный автофильтр в отдельный модуль.
Вопрос как заставить его работать на всех сгенерированных листах?
Не силен в макросах, больше использовал формулы. Если не трудно необходим исходный код как такое осуществить.
Буду очень благодарен!
 
Ответить
СообщениеДействительно удобный фильтр!
Но никак не могу приспособить его для своего файла.
Ситуация следующая:
Из первого листа книги макросом создается новый лист с именем (база + дата) на котором формируется таблица с данными по выборке.
Поместил Ваш удобный автофильтр в отдельный модуль.
Вопрос как заставить его работать на всех сгенерированных листах?
Не силен в макросах, больше использовал формулы. Если не трудно необходим исходный код как такое осуществить.
Буду очень благодарен!

Автор - Денис
Дата добавления - 26.02.2013 в 11:06
Alex_ST Дата: Вторник, 26.02.2013, 11:19 | Сообщение № 26
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Если
Цитата (Денис)
Не силен в макросах
, то зачем
Цитата (Денис)
Поместил Ваш удобный автофильтр в отдельный модуль
?
Процедуры удобного автофильтра "заточены" под функционирование в модуле листа.
И если уж выносить их кода-то в "общее место", так в модуль класса. И в Вашем случае программно придётся создавать не только новый лист, но и текстбоксы на нём. Тогда обработку их событий можно будет проводить в модуле класса.
Я модули класса знаю очень слабо. Да и считаю, что это здесь абсолютно ни к чему, т.к. текстбоксов на каждом листе не огромное число, а всего несколько штук и для каждого из них совсем не трудно написать одну строчку вызова обработчика событий.
Вам же проще не создавать новый лист, а копировать лист-шаблон (его можно сделать очень скрытым чтобы никто не попортил) с уже имеющимися на нём текстбоксами в нужных ячейках и процедурами обработки их событий. А уже после копирования листа-шаблона выгружать на него данные.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 26.02.2013, 11:20
 
Ответить
СообщениеЕсли
Цитата (Денис)
Не силен в макросах
, то зачем
Цитата (Денис)
Поместил Ваш удобный автофильтр в отдельный модуль
?
Процедуры удобного автофильтра "заточены" под функционирование в модуле листа.
И если уж выносить их кода-то в "общее место", так в модуль класса. И в Вашем случае программно придётся создавать не только новый лист, но и текстбоксы на нём. Тогда обработку их событий можно будет проводить в модуле класса.
Я модули класса знаю очень слабо. Да и считаю, что это здесь абсолютно ни к чему, т.к. текстбоксов на каждом листе не огромное число, а всего несколько штук и для каждого из них совсем не трудно написать одну строчку вызова обработчика событий.
Вам же проще не создавать новый лист, а копировать лист-шаблон (его можно сделать очень скрытым чтобы никто не попортил) с уже имеющимися на нём текстбоксами в нужных ячейках и процедурами обработки их событий. А уже после копирования листа-шаблона выгружать на него данные.

Автор - Alex_ST
Дата добавления - 26.02.2013 в 11:19
Yuzhniy Дата: Понедельник, 11.03.2013, 21:51 | Сообщение № 27
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

2007
Alex_ST, здравствуйте. Понравился Ваш автофильтр. Подскажите, пожалуйста, как в нем "опционально" работают пробел и звездочка*. Как настроить, чтобы поиск выполнялся именно с учетом пробела?


Век живи - век учись.
 
Ответить
СообщениеAlex_ST, здравствуйте. Понравился Ваш автофильтр. Подскажите, пожалуйста, как в нем "опционально" работают пробел и звездочка*. Как настроить, чтобы поиск выполнялся именно с учетом пробела?

Автор - Yuzhniy
Дата добавления - 11.03.2013 в 21:51
Alex_ST Дата: Понедельник, 11.03.2013, 21:58 | Сообщение № 28
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
А комментария к Private Sub FLTR_by_Box[vba]
Код
' Notes3    : Опциональный аргумент SP_Star = False задаёт менять или нет введённые пробелы на звёздочки
[/vba] разве не достаточно?
Если не хотите, чтобы заменяло пробел на звёздочку, то прописывайте а процедурах вызова значение True для этого аргумента
Так сделано для примера в процедуре обработки[vba]
Код
Private Sub TextBox2_Change()
     Call FLTR_by_Box(TextBox2, , "LTW", True)
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 11.03.2013, 21:59
 
Ответить
СообщениеА комментария к Private Sub FLTR_by_Box[vba]
Код
' Notes3    : Опциональный аргумент SP_Star = False задаёт менять или нет введённые пробелы на звёздочки
[/vba] разве не достаточно?
Если не хотите, чтобы заменяло пробел на звёздочку, то прописывайте а процедурах вызова значение True для этого аргумента
Так сделано для примера в процедуре обработки[vba]
Код
Private Sub TextBox2_Change()
     Call FLTR_by_Box(TextBox2, , "LTW", True)
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 11.03.2013 в 21:58
Yuzhniy Дата: Понедельник, 11.03.2013, 22:06 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

2007
Alex_ST, так я же не разбираюсь в таких комментариях). Это, выходит, надо макрос переписывать?


Век живи - век учись.
 
Ответить
СообщениеAlex_ST, так я же не разбираюсь в таких комментариях). Это, выходит, надо макрос переписывать?

Автор - Yuzhniy
Дата добавления - 11.03.2013 в 22:06
Yuzhniy Дата: Понедельник, 11.03.2013, 22:49 | Сообщение № 30
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

2007
Alex_ST, достаточно будет поменять только на "Лист1.Отобразить_все" в следующих строках:

'<<<<<<<<<<<< ИНДИВИДУАЛЬНЫЕ для каждого текстбокса процедуры обработки событий изменения текста »
Private Sub CoirbiFilterl_Change ()' фильтрация по скрытому столбцу 1 (А). 3 его ячейках прописаны
Call FLTR_by_3ox(CoirbiFilterl, 1, "LTh", True) ' фильтровать в столбце 1 (А), выравнивать тек
End Sub
Private Sub Text3oxl_Change() ' фильтровать по столбцу, в котором расположен текстбокс и выровнят
Call FLTR_by_3ox(Text3oxl, , "LTWh", True)' столбец для фильтрации определить по положению т
End Sub
Private Sub Text3ox2_Change()
Call FLTR_by_3ox(Text3ox2, , "LTW", True)
End Sub
Private Sub Text3ox3_Change()
Call FLTR_by_3ox(Text3ox3) изменить на Call FLTR_by_3ox(Text3ox3, , "LTW", True)
End Sub
Private Sub Text3ox4_Change()
Call FLTR_by_3ox(Text3ox4, , "") изменить на Call FLTR_by_3ox(Text3ox4, , "LTW", True, , "")
End Sub
'<<<<<<<<<<<< ОБЩИЕ для всех текстбоксов процедуры фильтрации и позиционирования »»»»»


Век живи - век учись.
 
Ответить
СообщениеAlex_ST, достаточно будет поменять только на "Лист1.Отобразить_все" в следующих строках:

'<<<<<<<<<<<< ИНДИВИДУАЛЬНЫЕ для каждого текстбокса процедуры обработки событий изменения текста »
Private Sub CoirbiFilterl_Change ()' фильтрация по скрытому столбцу 1 (А). 3 его ячейках прописаны
Call FLTR_by_3ox(CoirbiFilterl, 1, "LTh", True) ' фильтровать в столбце 1 (А), выравнивать тек
End Sub
Private Sub Text3oxl_Change() ' фильтровать по столбцу, в котором расположен текстбокс и выровнят
Call FLTR_by_3ox(Text3oxl, , "LTWh", True)' столбец для фильтрации определить по положению т
End Sub
Private Sub Text3ox2_Change()
Call FLTR_by_3ox(Text3ox2, , "LTW", True)
End Sub
Private Sub Text3ox3_Change()
Call FLTR_by_3ox(Text3ox3) изменить на Call FLTR_by_3ox(Text3ox3, , "LTW", True)
End Sub
Private Sub Text3ox4_Change()
Call FLTR_by_3ox(Text3ox4, , "") изменить на Call FLTR_by_3ox(Text3ox4, , "LTW", True, , "")
End Sub
'<<<<<<<<<<<< ОБЩИЕ для всех текстбоксов процедуры фильтрации и позиционирования »»»»»

Автор - Yuzhniy
Дата добавления - 11.03.2013 в 22:49
Alex_ST Дата: Вторник, 12.03.2013, 10:32 | Сообщение № 31
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
У меня на работе сисадмины заблокировали скачивание файлов с макросами (собаки!). Поэтому посмотреть, по какому из вариантов Вы пытаетесь работать, я не могу, а смотрю код, записанный у меня на компьютере. А он может немного не совпадать с примером.
Но даже по приведённому Вами фрагменту я вижу, что Вы что-то пытались самостоятельно менять, т.к. имена текстбоксов в процедурах обработки событий не совпадают с моими.

Читайте комментарии! Они написаны по-русски и, ИМХО, достаточно подробно (по крайней мере меня ещё никто никогда не упрекал в их недостаточной подробности).
[vba]
Код
Private Sub FLTR_by_Box(oBj As Object, Optional СТОЛБЕЦ, Optional LTWH As String = "ltw", Optional SP_Star As Boolean = False)
[/vba] означает, что процедура FLTR_by_Box при её вызове должна получить следующие аргументы:
oBj As Object - объект, который она обработает - ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ
СТОЛБЕЦ - задаёт номер столбца, по которому нужно фильтровать - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ. Если СТОЛБЕЦ не задан, то столбец определится автоматически
LTWH As String - задаёт параметры выравнивания oBj относительно ячейки:
' L - по левому краю, T - по верхнему краю, W - по ширине, H - по высоте, R - по правому краю, B - по нижнему краю
' Если выравнивание не требуется, то можно задать любой стринг, не содержащий этих ЛАТИНСКИХ букв или пустой стринг ""
' LTWH - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ - если его опустить, то будет выполнено выравнивание по умолчанию - "ltw"
' Поэтому если Вам нужно выравнивание по левой и верхней границам и растягивание на всю ширину ячейки, то "LTW" можно не писать.
SP_Star As Boolean - задаёт менять или нет введённые пробелы на звёздочки - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ - если его опустить, то НЕ будут заменяться. Чтобы пробелы заменялись на звёздочки, нужно указывать его значение True



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеУ меня на работе сисадмины заблокировали скачивание файлов с макросами (собаки!). Поэтому посмотреть, по какому из вариантов Вы пытаетесь работать, я не могу, а смотрю код, записанный у меня на компьютере. А он может немного не совпадать с примером.
Но даже по приведённому Вами фрагменту я вижу, что Вы что-то пытались самостоятельно менять, т.к. имена текстбоксов в процедурах обработки событий не совпадают с моими.

Читайте комментарии! Они написаны по-русски и, ИМХО, достаточно подробно (по крайней мере меня ещё никто никогда не упрекал в их недостаточной подробности).
[vba]
Код
Private Sub FLTR_by_Box(oBj As Object, Optional СТОЛБЕЦ, Optional LTWH As String = "ltw", Optional SP_Star As Boolean = False)
[/vba] означает, что процедура FLTR_by_Box при её вызове должна получить следующие аргументы:
oBj As Object - объект, который она обработает - ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ
СТОЛБЕЦ - задаёт номер столбца, по которому нужно фильтровать - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ. Если СТОЛБЕЦ не задан, то столбец определится автоматически
LTWH As String - задаёт параметры выравнивания oBj относительно ячейки:
' L - по левому краю, T - по верхнему краю, W - по ширине, H - по высоте, R - по правому краю, B - по нижнему краю
' Если выравнивание не требуется, то можно задать любой стринг, не содержащий этих ЛАТИНСКИХ букв или пустой стринг ""
' LTWH - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ - если его опустить, то будет выполнено выравнивание по умолчанию - "ltw"
' Поэтому если Вам нужно выравнивание по левой и верхней границам и растягивание на всю ширину ячейки, то "LTW" можно не писать.
SP_Star As Boolean - задаёт менять или нет введённые пробелы на звёздочки - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ - если его опустить, то НЕ будут заменяться. Чтобы пробелы заменялись на звёздочки, нужно указывать его значение True

Автор - Alex_ST
Дата добавления - 12.03.2013 в 10:32
Yuzhniy Дата: Вторник, 12.03.2013, 14:51 | Сообщение № 32
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

2007
Нет, ничего не менял, т.к. я в макросах ноль. Вот что красным выделено, это, как я понял из комментария, нужно бы поменять. Но не знаю, вот спрашиваю.


Век живи - век учись.
 
Ответить
СообщениеНет, ничего не менял, т.к. я в макросах ноль. Вот что красным выделено, это, как я понял из комментария, нужно бы поменять. Но не знаю, вот спрашиваю.

Автор - Yuzhniy
Дата добавления - 12.03.2013 в 14:51
Yuzhniy Дата: Вторник, 12.03.2013, 15:09 | Сообщение № 33
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

2007
в посте 28 написано Если не хотите, чтобы заменяло пробел на звёздочку, то прописывайте а процедурах вызова значение True для этого аргумента, а в посте 32 Чтобы пробелы заменялись на звёздочки, нужно указывать его значение True. Просто опечатка или это о разных аргументах?

Там наверное совсем немного надо поменять. Если Вы могли бы написать, где конкретно (а то там 3 листа и, как я понимаю, 3 части макроса или 3 макроса) и как именно изменить. НЕОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ опустить... значит ли это просто удалить строки или что-то другое?


Век живи - век учись.
 
Ответить
Сообщениев посте 28 написано Если не хотите, чтобы заменяло пробел на звёздочку, то прописывайте а процедурах вызова значение True для этого аргумента, а в посте 32 Чтобы пробелы заменялись на звёздочки, нужно указывать его значение True. Просто опечатка или это о разных аргументах?

Там наверное совсем немного надо поменять. Если Вы могли бы написать, где конкретно (а то там 3 листа и, как я понимаю, 3 части макроса или 3 макроса) и как именно изменить. НЕОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ опустить... значит ли это просто удалить строки или что-то другое?

Автор - Yuzhniy
Дата добавления - 12.03.2013 в 15:09
Alex_ST Дата: Вторник, 12.03.2013, 20:47 | Сообщение № 34
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Цитата (Yuzhniy)
Нет, ничего не менял, т.к. я в макросах ноль
Да, а кто изменил названия элементов управления?
У меня написано:[vba]
Код
Private Sub CombiFilter1_Change()   ' фильтрация по скрытому столбцу 1 (А). В его ячейках прописаны формуды типа A3=B3&E3 ...
       Call FLTR_by_Box(CombiFilter1, 1, "LTh", True)   ' фильтровать в столбце 1 (А), выравнивать текстбокс в ячейке ВЛЕВО (L), ВВЕРХ (T) и по её высоте (H) и заменять каждый введённый "пробел" на "звёздочку"
End Sub
Private Sub TextBox1_Change()   ' фильтровать по столбцу, в котором расположен текстбокс и выровнять текстбокс по ячейке
       Call FLTR_by_Box(TextBox1, , "LTWh", True)   ' столбец для фильтрации определить по положению текстбокса, выравнивать его в ячейке ВЛЕВО (L), ВВЕРХ (T), по ширине ячейки (W) и по её высоте (H) и заменять каждый введённый "пробел" на "звёздочку"
End Sub
Private Sub TextBox2_Change()
       Call FLTR_by_Box(TextBox2, , "LTW", True)
End Sub
Private Sub TextBox3_Change()
       Call FLTR_by_Box(TextBox3)
End Sub
Private Sub TextBox4_Change()
       Call FLTR_by_Box(TextBox4, , "")
End Sub
[/vba]
А у Вас:[vba]
Код
Private Sub CoirbiFilterl_Change ()' фильтрация по скрытому столбцу 1 (А). 3 его ячейках прописаны
Call FLTR_by_3ox(CoirbiFilterl, 1, "LTh", True) ' фильтровать в столбце 1 (А), выравнивать тек
End Sub
Private Sub Text3oxl_Change() ' фильтровать по столбцу, в котором расположен текстбокс и выровнят
Call FLTR_by_3ox(Text3oxl, , "LTWh", True)' столбец для фильтрации определить по положению т
End Sub
Private Sub Text3ox2_Change()
Call FLTR_by_3ox(Text3ox2, , "LTW", True)
End Sub
Private Sub Text3ox3_Change()
Call FLTR_by_3ox(Text3ox3) изменить на Call FLTR_by_3ox(Text3ox3, , "LTW", True)
End Sub
Private Sub Text3ox4_Change()
Call FLTR_by_3ox(Text3ox4, , "") изменить на Call FLTR_by_3ox(Text3ox4, , "LTW", True, , "")
End Sub
[/vba]
Чувствуете разницу между TextBox1 и Text3oxl, между TextBox2 и Text3ox2 и т.д.?
Ведь не хотите же Вы сказать, что в коде у Вас написано всё правильно, а при копировании само заменилось TextBox1 на Text3oxl ?
Цитата (Yuzhniy)
в посте 28 написано Если не хотите, чтобы заменяло пробел на звёздочку, то прописывайте а процедурах вызова значение True для этого аргумента, а в посте 32 Чтобы пробелы заменялись на звёздочки, нужно указывать его значение True. Просто опечатка или это о разных аргументах?

А попробовать и выяснить очень трудно?
Специально сейчас скачал пример из первого поста. Посмотрел. Там написано[vba]
Код
Private Sub FLTR_by_Box(oBj As Object, Optional СТОЛБЕЦ, Optional LTWH As String = "ltw", Optional SP_Star As Boolean = False)
'---------------------------------------------------------------------------------------
' Purpose   : п/пр. фильтрации по значению аргумента oBj.Value
' Notes1    : Опциональный аргумент СТОЛБЕЦ задаёт номер столбца, по которому нужно фильтровать. Если СТОЛБЕЦ = 0, то столбец определися автоматически
' Notes2    : Опциональный аргумент LTWH = "ltw" задаёт параметры выравнивания oBj относительно ячейки:
'             L - по левому краю, T - по верхнему краю, W - по ширине, H - по высоте, R - по правому краю, B - по нижнему краю
'             Если выравнивание не требуется, то можно задать любой стринг, не содержащий этих ЛАТИНСКИХ букв или пустой стринг ""
' Notes3    : Опциональный аргумент SP_Star = False задаёт менять или нет введённые пробелы на звёздочки
'---------------------------------------------------------------------------------------
[/vba]Так трудно догадаться, что если аргумент, задающий менять или нет пробелы на звёздочки, равен False, т.е. ЛОЖЬ, т.е. НЕТ, то замена не происходит? А если True==ИСТИНА==ДА, то происходит?
Тут никакого программирования знать не нужно. Достаточно просто логики и начального знания английского языка.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Вторник, 12.03.2013, 20:55
 
Ответить
Сообщение
Цитата (Yuzhniy)
Нет, ничего не менял, т.к. я в макросах ноль
Да, а кто изменил названия элементов управления?
У меня написано:[vba]
Код
Private Sub CombiFilter1_Change()   ' фильтрация по скрытому столбцу 1 (А). В его ячейках прописаны формуды типа A3=B3&E3 ...
       Call FLTR_by_Box(CombiFilter1, 1, "LTh", True)   ' фильтровать в столбце 1 (А), выравнивать текстбокс в ячейке ВЛЕВО (L), ВВЕРХ (T) и по её высоте (H) и заменять каждый введённый "пробел" на "звёздочку"
End Sub
Private Sub TextBox1_Change()   ' фильтровать по столбцу, в котором расположен текстбокс и выровнять текстбокс по ячейке
       Call FLTR_by_Box(TextBox1, , "LTWh", True)   ' столбец для фильтрации определить по положению текстбокса, выравнивать его в ячейке ВЛЕВО (L), ВВЕРХ (T), по ширине ячейки (W) и по её высоте (H) и заменять каждый введённый "пробел" на "звёздочку"
End Sub
Private Sub TextBox2_Change()
       Call FLTR_by_Box(TextBox2, , "LTW", True)
End Sub
Private Sub TextBox3_Change()
       Call FLTR_by_Box(TextBox3)
End Sub
Private Sub TextBox4_Change()
       Call FLTR_by_Box(TextBox4, , "")
End Sub
[/vba]
А у Вас:[vba]
Код
Private Sub CoirbiFilterl_Change ()' фильтрация по скрытому столбцу 1 (А). 3 его ячейках прописаны
Call FLTR_by_3ox(CoirbiFilterl, 1, "LTh", True) ' фильтровать в столбце 1 (А), выравнивать тек
End Sub
Private Sub Text3oxl_Change() ' фильтровать по столбцу, в котором расположен текстбокс и выровнят
Call FLTR_by_3ox(Text3oxl, , "LTWh", True)' столбец для фильтрации определить по положению т
End Sub
Private Sub Text3ox2_Change()
Call FLTR_by_3ox(Text3ox2, , "LTW", True)
End Sub
Private Sub Text3ox3_Change()
Call FLTR_by_3ox(Text3ox3) изменить на Call FLTR_by_3ox(Text3ox3, , "LTW", True)
End Sub
Private Sub Text3ox4_Change()
Call FLTR_by_3ox(Text3ox4, , "") изменить на Call FLTR_by_3ox(Text3ox4, , "LTW", True, , "")
End Sub
[/vba]
Чувствуете разницу между TextBox1 и Text3oxl, между TextBox2 и Text3ox2 и т.д.?
Ведь не хотите же Вы сказать, что в коде у Вас написано всё правильно, а при копировании само заменилось TextBox1 на Text3oxl ?
Цитата (Yuzhniy)
в посте 28 написано Если не хотите, чтобы заменяло пробел на звёздочку, то прописывайте а процедурах вызова значение True для этого аргумента, а в посте 32 Чтобы пробелы заменялись на звёздочки, нужно указывать его значение True. Просто опечатка или это о разных аргументах?

А попробовать и выяснить очень трудно?
Специально сейчас скачал пример из первого поста. Посмотрел. Там написано[vba]
Код
Private Sub FLTR_by_Box(oBj As Object, Optional СТОЛБЕЦ, Optional LTWH As String = "ltw", Optional SP_Star As Boolean = False)
'---------------------------------------------------------------------------------------
' Purpose   : п/пр. фильтрации по значению аргумента oBj.Value
' Notes1    : Опциональный аргумент СТОЛБЕЦ задаёт номер столбца, по которому нужно фильтровать. Если СТОЛБЕЦ = 0, то столбец определися автоматически
' Notes2    : Опциональный аргумент LTWH = "ltw" задаёт параметры выравнивания oBj относительно ячейки:
'             L - по левому краю, T - по верхнему краю, W - по ширине, H - по высоте, R - по правому краю, B - по нижнему краю
'             Если выравнивание не требуется, то можно задать любой стринг, не содержащий этих ЛАТИНСКИХ букв или пустой стринг ""
' Notes3    : Опциональный аргумент SP_Star = False задаёт менять или нет введённые пробелы на звёздочки
'---------------------------------------------------------------------------------------
[/vba]Так трудно догадаться, что если аргумент, задающий менять или нет пробелы на звёздочки, равен False, т.е. ЛОЖЬ, т.е. НЕТ, то замена не происходит? А если True==ИСТИНА==ДА, то происходит?
Тут никакого программирования знать не нужно. Достаточно просто логики и начального знания английского языка.

Автор - Alex_ST
Дата добавления - 12.03.2013 в 20:47
Yuzhniy Дата: Среда, 13.03.2013, 17:40 | Сообщение № 35
Группа: Пользователи
Ранг: Новичок
Сообщений: 30
Репутация: 0 ±
Замечаний: 0% ±

2007
На самом деле, в коде все правильно, и я действительно хочу сказать, что так вышло при копировании и вставке. Обратите внимание хотя бы на строку Private Sub CoirbiFilterl_Change в моем посте (в самом коде имеем CombiFilter1_Change); наверное НЕ ТРУДНО ДОГАДАТЬСЯ, что в совокупности с другими ошибками такой абсурд, как COIRBIFILTERL, не есть результат работы ума (даже если этот ум не силен в программировании, он скорее бы написал COME-WITH-ME-FILTER-ONE, чем COIRBIFILTERL?????). Как Вы думаете, Гуру?

Я выделил красным то, на что хочу обратить Ваше внимание, и спросил, достаточно ли будет это поменять. Спасибо, что заглянули в весь "код". Там ошибки. Но я повторяю, что в коде никто ничего не менял, это результат копирования и вставки; в коде все в порядке. Не будем тратить время на это. Более того, от Вас не было ни одного конкретного ответа на конкретный вопрос: это менять или не это? в каком из 3-х листов? что именно поменять?
А то, что TRUE=ИСТИНА, FALSE=ЛОЖЬ, мы уже давно догадались. Спасибо, Гуру.
И немного о логике. Если бы в коде макроса по чьей-либо вине на самом деле было столько ошибок, по одной в каждом слове, наверное вопрос звучал бы иначе, напр.: А ПОЧЕМУ АВТОФИЛЬТР НЕ РАБОТАЕТ? И напротив, было бы удивительно, что он все еще работает, а пользователь зациклился на звездочке и пробеле))


Век живи - век учись.

Сообщение отредактировал Yuzhniy - Среда, 13.03.2013, 18:15
 
Ответить
СообщениеНа самом деле, в коде все правильно, и я действительно хочу сказать, что так вышло при копировании и вставке. Обратите внимание хотя бы на строку Private Sub CoirbiFilterl_Change в моем посте (в самом коде имеем CombiFilter1_Change); наверное НЕ ТРУДНО ДОГАДАТЬСЯ, что в совокупности с другими ошибками такой абсурд, как COIRBIFILTERL, не есть результат работы ума (даже если этот ум не силен в программировании, он скорее бы написал COME-WITH-ME-FILTER-ONE, чем COIRBIFILTERL?????). Как Вы думаете, Гуру?

Я выделил красным то, на что хочу обратить Ваше внимание, и спросил, достаточно ли будет это поменять. Спасибо, что заглянули в весь "код". Там ошибки. Но я повторяю, что в коде никто ничего не менял, это результат копирования и вставки; в коде все в порядке. Не будем тратить время на это. Более того, от Вас не было ни одного конкретного ответа на конкретный вопрос: это менять или не это? в каком из 3-х листов? что именно поменять?
А то, что TRUE=ИСТИНА, FALSE=ЛОЖЬ, мы уже давно догадались. Спасибо, Гуру.
И немного о логике. Если бы в коде макроса по чьей-либо вине на самом деле было столько ошибок, по одной в каждом слове, наверное вопрос звучал бы иначе, напр.: А ПОЧЕМУ АВТОФИЛЬТР НЕ РАБОТАЕТ? И напротив, было бы удивительно, что он все еще работает, а пользователь зациклился на звездочке и пробеле))

Автор - Yuzhniy
Дата добавления - 13.03.2013 в 17:40
Alex_ST Дата: Среда, 13.03.2013, 20:38 | Сообщение № 36
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Цитата (Yuzhniy)
от Вас не было ни одного конкретного ответа на конкретный вопрос

Ну как же ещё можно более конкретно ответить, если эти ответы:
Цитата (Alex_ST)
SP_Star As Boolean - задаёт менять или нет введённые пробелы на звёздочки - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ - если его опустить, то НЕ будут заменяться. Чтобы пробелы заменялись на звёздочки, нужно указывать его значение Tru

Цитата (Alex_ST)
если аргумент, задающий менять или нет пробелы на звёздочки, равен False, т.е. ЛОЖЬ, т.е. НЕТ, то замена не происходит

Вы считаете не конкретными?

А по замене чего-то на что-то в приведённом Вами коде я ничего ответить просто не смог, т.к. там ОГРОМНАЯ куча опечаток.
Откуда я мог знать, что движок форума персонально Вас подсиживает и сам меняет буквы, которые Вы вводите правильно? smile :) smile
При чём как хитро, гад, меняет! Ладно бы ещё 1 символ на другой, так ведь нет - меняет, например, CombiFilter1 (12 символов) на CoirbiFilterl (13 символов) !!!



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 13.03.2013, 21:04
 
Ответить
Сообщение
Цитата (Yuzhniy)
от Вас не было ни одного конкретного ответа на конкретный вопрос

Ну как же ещё можно более конкретно ответить, если эти ответы:
Цитата (Alex_ST)
SP_Star As Boolean - задаёт менять или нет введённые пробелы на звёздочки - НЕ ОБЯЗАТЕЛЬНЫЙ АРГУМЕНТ - если его опустить, то НЕ будут заменяться. Чтобы пробелы заменялись на звёздочки, нужно указывать его значение Tru

Цитата (Alex_ST)
если аргумент, задающий менять или нет пробелы на звёздочки, равен False, т.е. ЛОЖЬ, т.е. НЕТ, то замена не происходит

Вы считаете не конкретными?

А по замене чего-то на что-то в приведённом Вами коде я ничего ответить просто не смог, т.к. там ОГРОМНАЯ куча опечаток.
Откуда я мог знать, что движок форума персонально Вас подсиживает и сам меняет буквы, которые Вы вводите правильно? smile :) smile
При чём как хитро, гад, меняет! Ладно бы ещё 1 символ на другой, так ведь нет - меняет, например, CombiFilter1 (12 символов) на CoirbiFilterl (13 символов) !!!

Автор - Alex_ST
Дата добавления - 13.03.2013 в 20:38
Serge_007 Дата: Среда, 13.03.2013, 20:59 | Сообщение № 37
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Yuzhniy, читайте правила и оформляйте коды СООТВЕТСТВУЮЩИМИ тегами. А при ручной раскраске Вы допускаете ошибки в коде. Движок тут ни при чём smile


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеYuzhniy, читайте правила и оформляйте коды СООТВЕТСТВУЮЩИМИ тегами. А при ручной раскраске Вы допускаете ошибки в коде. Движок тут ни при чём smile

Автор - Serge_007
Дата добавления - 13.03.2013 в 20:59
essinyak Дата: Воскресенье, 26.05.2013, 12:09 | Сообщение № 38
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Alex_ST, При открытии общего доступа к файлу через Рецензирование-Защитить книгу и дать общий доступ выскакивает ошибка. Как победить данную проблему? Как должен быть преобразован код?


Сообщение отредактировал essinyak - Воскресенье, 26.05.2013, 12:22
 
Ответить
СообщениеAlex_ST, При открытии общего доступа к файлу через Рецензирование-Защитить книгу и дать общий доступ выскакивает ошибка. Как победить данную проблему? Как должен быть преобразован код?

Автор - essinyak
Дата добавления - 26.05.2013 в 12:09
Alex_ST Дата: Воскресенье, 26.05.2013, 15:22 | Сообщение № 39
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
essinyak,
я уже отвечал Вам на Планете в личке, что ошибка возникает из-за невозможности программно позиционировать и изменить размеры OLE-объектов (Текстбоксов) в режиме общего доступа к файлу.
Для того, чтобы не возникало ошибки при открытии общего доступа к файлу достаточно вставить обработчик ошибок в процедуру FLTR_by_Box:

Я только что проверил это решение. Открыл общий доступ к файлу с удобюным автофильтром у себя на компьютере и проверил работу фильтра - всё в норме.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Воскресенье, 26.05.2013, 15:25
 
Ответить
Сообщениеessinyak,
я уже отвечал Вам на Планете в личке, что ошибка возникает из-за невозможности программно позиционировать и изменить размеры OLE-объектов (Текстбоксов) в режиме общего доступа к файлу.
Для того, чтобы не возникало ошибки при открытии общего доступа к файлу достаточно вставить обработчик ошибок в процедуру FLTR_by_Box:

Я только что проверил это решение. Открыл общий доступ к файлу с удобюным автофильтром у себя на компьютере и проверил работу фильтра - всё в норме.

Автор - Alex_ST
Дата добавления - 26.05.2013 в 15:22
masterlii Дата: Среда, 05.06.2013, 12:04 | Сообщение № 40
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Фильтр безусловно супер, но есть один вопросик - при вводе числовых значений в форму поиска - ищет только ячейки, где текст+ это число, а отдельно числа не находит! в чем проблема, объясните плиз!!я не силен в программировании, а такой фильтр для работы с цифрами позарез нужен
 
Ответить
СообщениеФильтр безусловно супер, но есть один вопросик - при вводе числовых значений в форму поиска - ищет только ячейки, где текст+ это число, а отдельно числа не находит! в чем проблема, объясните плиз!!я не силен в программировании, а такой фильтр для работы с цифрами позарез нужен

Автор - masterlii
Дата добавления - 05.06.2013 в 12:04
Мир MS Excel » Вопросы и решения » Готовые решения » Удобный автофильтр (Удобный автофильтр по критерию "содержит")
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

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