Спасибо Nic70y, сейчас проверяю, но вроде бы оно самое. А сумму по такому же принципу тоже ведь можно подсчитывать,или только по СУММЕСЛИ? (это вопрос для самообразования)
Изменено: - 30.03.2013 20:45:46
|
10.01.2013 16:33:28
Простите, Юрий, вроде бы чистил файл перед отправкой. А Вашей формы в файле действительно нет, т.к. вариант с вызовом формы с листа Приход, т.е., как я понимаю с объявлением массива на текущем листе я надеюсь справиться сам (чуть откорректированный вариант Вашего кода работает, просто не уверен что этот вариант корректировки грамотен), а вот как вызвать вашу форму с другого листа (Приход+расход за месяц (проба), но с пометками на лист Приход, я вообще не представляю и недеюсь увидеть Ваш вариант. Лист Расход в примере оставлен, так как данные с него идут в отчетный лист и, если Вы мне поможете с моим сегодняшним вопросом, я постараюсь сделать аналог для таких же действий (с теми же целями отбора), но с данными листа Расход.
Изменено: - 10.01.2013 16:33:53
|
|
|
|
|
|
10.01.2013 14:41:32
нужна РЕАЛЬНАЯ структура таблицы с данными.
Уважаемый Юрий, моя благодарность за вашу помощь за прошедшее время не стала меньше, но при проверке Вашего варианта вылез "косячок". Пометки отказываются записываться на лист, если столбцы скрыты, (object variable or with block variable not set). Моих знаний хватило только на такую модификацию вашего кода Private Sub UserForm_Initialize() Columns("D:E").EntireColumn.Hidden = False Dim i As Long, LastRow As Long LastRow = Cells(Rows.Count, 4).End(xlUp).Row For i = 4 To LastRow Me.ListBox1.AddItem Cells(i, 4) Next End Sub Private Sub UserForm_Terminate() Columns("D:E").EntireColumn.Hidden = True End Sub Ответьте, если не затруднит, это нормальное решение проблемы? И, уж коли тема немного не закрылась, вопрос по реальному файлу в новом примере, сам как хотел бы - не справился. Требуется на листе "Приход+расход за месяц (проба)" вызвать "вышепридуманную" Вами форму с данными из листа "Приход", видеть в Листбоксе я хотел столбцы U:W, отметки ставить в столбец Z. Хотя, если отображение нескольких столбцов по каким-либо причинам затруднительно, подошел бы вариант отображения только столбца T, в нем все равно содержится аналогичная информация, только тогда смещение нужно будет сделать Rng.Offset(0, 6) = "a" правильно? Самое главное и неполучающееся у меня это объявление массива с данными из другого листа, если конечно это возможно. Галочки в столбце Z в примере показаны для образца. Извините за сумбур, если кому-нибудь будет неясно, поясню подробнее. Заранее спасибо. |
|
|
|
|
|
09.01.2013 21:59:24
всегда вроде бы на форуме рекомендуют не перегружать примеры излишней информацией, в реальном примере и листов много и макросов и прочего в данном случае "мусора". А по поводу моего последнего вопроса я наверное неудачно объяснил. В примере скрытая информация начинается в ячейке D4 и соответственно отображается в форме, а как в форму добавить (только для отображения) информацию и из С4 и из D4 разом, причем колонка для отметок будет по-прежнему одна, та же самая, в форме нужно только отображение нескольких столбцов
|
|
|
|
|
|
09.01.2013 21:19:33
|
|||
|
|
|
|
09.01.2013 20:41:28
Все правильно, вывести на форму нужно именно данные со скрытых столбцов и вот именно в ListBox как раз я и хочу иметь возможность их "пометить" галочкой там, checkbox -ом или еще как-нибудь, и эти пометки должны появиться на соответствующих строках листа для последующего отбора. И еще, подскажите уж заодно как можно будет (если можно) разом убирать все предыдущие пометки (для следующего отбора). PS А "птицы" на примере, нааверное смутившие и запутавшие Вас, поставлены просто для примера ,примерно так я хочу чтобы было после "прокрыживания" на форме
Изменено: - 09.01.2013 21:29:41
|
|
|
|
|
|
09.01.2013 20:23:30
Задумывается следующее: столбцы скрыты, в них находятся предварительно отфильтрованные (формулами) данные. Для возможности дальнейшего (в случае необходимости) отбора предполагается "прокрыживание" выбранных строк. Данные я предполагал увидеть в текст- или листбоксе (или они не могут получить данные со скрытых диапазонов, тогда жаль очень), и вот увидев данные (в примере диапазона: столбец текста и столбец в котором предполаегается простановка "крыжей"
|
|
|
|
|
|
09.01.2013 18:30:23
Уважаемые гуру, подскажите как решить небольшую задачу. В документе имеются скрытые столбцы (D:F) в них находится некая информация. С помощью темы "Пометка элементов списка флажками (checkbox)" () найденной на этом уважаемом ресурсе я могу "отмечать" нужные мне строки. Вопрос таков: как перенести в listbox или textbox (я не знаю что из них лучше подходит для этой ситуации), находящихся на UserForm (вызов правой клавишей мыши) диапазон (в данном случае D4:E10) с возможностью аналогичным способом "простановки" этих самых галочек в UserForm или иного варианта пометок, но ОБЯЗАТЕЛЬНО с появлением этих самых пометок в соответствующих строках на листе, так как по ним (по отметкам) будет производиться отбор данных. Вариант с простым отображением скрытых строк подходит не совсем, так как в документа большое кол-во столбцов, могущих при различных условиях быть и скрытыми и открытыми, а после выполнения пометок хотелось бы возвращения к первоначальному варианту отображения столбцов без дополнительных манипуляций. Заранее спасибо всем откликнувшимся.
|
|
|
|
|
|
08.01.2013 15:59:13
|
|||||
|
|
|
|
08.01.2013 15:28:20
Hugo, я правильно Вас понял, что на ДРУГОМ листе необходимо выставить условие, а вот скрываемые строки указать приблизительно как:
Sheets("Лист2" ) .Rows("89:127" ) .EntireRow.Hidden = False Так? А по первой части вопроса, неужели код не оптимизируется? (он и так работает конечно, но я посчитал, что простто перечислением n-го количества условий настоящие профи не пишут и хотел узнать как код выглядит более правильно) |
|
|
|
|
|
08.01.2013 14:00:03
Уважаемые гуру, помогите оптимизировать код. Имеется:
условий подобных If Not Intersect(Target, Range("B89" ) ) Is Nothing Then If Target.Value = 0 Then Rows("89:127" ) .EntireRow.Hidden = True Else Rows("89:127" ) .EntireRow.Hidden = False End If End If у меня не 2, а 8 и, я так понимаю, что данный вариант кода очень далеко не оптимален, ведь их могло бы быть и 80 или еще больше. Как оптимизировать данную часть кода? И еще, как в подобном коде (задача там полностью аналогична, при заполнении ячеек должны отображаться/скрываться определенные строки), на этой же странице указать "проверочную" ячейку не как: If Not Intersect(Target, Range("B128" ) ) Is Nothing Then а на ДРУГОМ листе данного файла . Заранее спасибо всем откликнувшимся |
|||
|
|
|
|
03.01.2013 21:33:32
Спасибо Serge 007 за Ваш вариант, но для ума (мне) подскажите, почему в моем варианте формула не работала (ведь подобные я неоднократно использовал) и еще, в этом файле, если я вводил дату "ручками", а не через userform с заданным форматом и указывал эту ячейку в качестве контрольной, то все работало как и полагается без формулы массива
|
|
|
|
|