|
14.02.2026 19:29:54
Доброго времени суток, уважаемые форумчане. Пытаюсь использовать функцию пользователя, взятую с сайта:
Привел весь код, а не ссылку, т.к. вопрос именно по нему. Функция замечательная, работает верно, но можно ли из нее, не затрагивая ничего, извлечь еще один параметр? Поясню: по ходу выполнения кода, при проверке массива на соответствие ключам, он находит положение первой подходящей строки:
ну и далее. Так вот, как можно в некую переменную передать в этот момент значение i ? Так-то понятно, дописать типа: if r=empty then r=i, но как и что нужно написать, чтобы наряду с полученным значением функции ArrAutofilterNew = newarr иметь доступ к этому дополнительному значению r? Фактически, мне необходимо знать положение отфильтрованного массива (в моем случае он непрерывный) в исходном массиве и я надеюсь получить это значение вышеописанным методом. P.S. Заранее спасибо всем откликнувшимся
Изменено: - 14.02.2026 19:31:10
|
|||||
|
|
|
|
21.01.2026 07:53:39
А теперь я немного не понял, . В прилагаемом файле есть лист, на нем здоровенная кнопка, нажатие на которую запускает UserForm с искомым ListBox. Мог бы конечно на открытие файлы повесить запуск UserForm или на двойной или правый клик, но какая разница? Или вы не это имели ввиду?
|
|
|
|
|
|
20.01.2026 17:58:56
, приношу извинения, но почему-то при первой проверке вашего кода отработалось с указанной "неправильностью", не знаю почему. А вот теперь, когда формировал файл по вашей просьбе и проверил, все сработало как надо. Еще раз извините за критику.
P.S. кстати понял почему не получилось с первого раза, я не заметил того, что вы закавычили имена макросов и оставил сначала свою строку
Изменено: - 20.01.2026 19:47:28
|
|
|
|
|
|
20.01.2026 09:32:51
Доброго времени суток, уважаемые форумчане. Скажу сразу, нынешний вопрос уже имеет решение, мне просто хочется узнать имеется ли другое. Итак, на форме есть листбокс с прописанным содержанием:
Заранее спасибо всем откликнувшимся |
|||||||
|
|
|
|
28.12.2025 16:58:09
|
|||
|
|
|
|
27.12.2025 18:04:52
|
|||
|
|
|
|
27.12.2025 16:49:25
Доброго времени суток, уважаемые форумчане, всех с наступающим! Очень давно не обращался за помощью на наш форум, но вот опять вылез вопрос. И, самое главное, понимаю, что проблема скорее всего крошечная, а сам никак не могу разобраться
Заранее спасибо всем откликнувшимся.
Изменено: - 27.12.2025 17:35:37
|
|||
|
|
|
|
27.02.2025 13:40:52
Дмитрий, спасибо за ответ, буду изучать. А что качается логики моей задумки, то не стал грузить форумчан, посчитал ненужным подробное объяснение. А было оно таким: Для проверки запускать ли заново нумерацию я применил словарь dicNum, если есть ключ - нумерация продолжается, если нет - добавить ключ (сформированный в цикле) + сбросить значение до 1. А вот как победить стремление функции сбрасывать значение на 0 я и задал главный вопрос, мне казалось тогда, что как-то по аналогии со Static можно это соорудить. Еще раз спасибо.
|
|
|
|
|
|
27.02.2025 12:57:57
Прошу прощения, Дмитрий, но нет. dicNum в реальном файле у меня объявлен как Private, а вот в примере не указал, каюсь. Но, еще раз извиняюсь, дело не в этом, как мне кажется. Когда я прохожу код пошагово, я получаю при первой итерации верное значение n. Далее изменяется i, заново отрабатывается функция и я сразу вижу, что значение Calc_NR = 0. Естественно функция дает ответ 1, при этом словарь dicNum, как ему и положено содержит первый ключ. Ваш код (я скопировал его без изменений) приводит к аналогичному результату. А что касается второго вопроса, то дело в том, что я встречал код в котором проверялось значение функции типа If функция>0 then, именно функции, а не переменной принимающей ее значение. Вот по аналогии, я и хотел бы не рассчитывать значение n, а напрямую указывать функцию как один из аргументов.
|
|
|
|
|
|
27.02.2025 12:22:43
Доброго времени суток, уважаемые форумчане. Вновь обращаюсь к вам за помощью в написании кода, ситуация такая: имеется код наполнения словаря:
Заранее спасибо всем откликнувшимся |
|||||||||
|
|
|
|
17.02.2025 12:07:42
Вроде бы разобрался, еще раз перепроверив исходный образец кода отправки. Код теперь выглядит так:
|
|||
|
|
|
|
16.02.2025 20:27:44
Доброго времени суток, уважаемые форумчане. Я уже поднимал тему отправки файлов через CDO на нашем форуме, но вопрос возник снова. Итак, в функцию отправки письма передается словарь, ключом которого является адрес, а итемом - массив наименований документов к тому времени уже созданных. Словарь (для примера конечно) наполняется так:
Заранее спасибо всем откликнувшимся. |
|||||||
|
|
|
|
12.02.2025 12:03:06
|
|||
|
|
|
|
11.02.2025 17:54:45
, МатросНаЗебре, спасибо за ответы. Буду думать
P.S. прочитал статью Дмитрия, подумал, многое стало понятнее. НО можно еще немного обнаглеть и узнать еще одну вещь? Сейчас в моей ф-и это не слишком важно, но вдруг возможна иная ситуация в будущем
Изменено: - 11.02.2025 18:40:34
|
|
|
|
|
|
11.02.2025 15:30:46
Наберусь смелости и возражу уважаемому . Возможно я недостаточно понятно обрисовал проблему, попробую еще раз. Измененный вариант функции правильно вызывается и отрабатывается кодом VBA, а вот как измененную ф-ю вызвать с листа неясно. Если указать в качестве аргументов диапазоны или даже диапазон (как в примере =DeclensionFIO_Arr(2;F1)), то я смогу наверное данные для ф-ии изменить на Split(SNP(0).Formula)(0), но ведь тогда данные не подойдут для варианта, вызываемого кодом, там у SNP(0) вообще нет свойства .Formula, а есть только значения. Получается, что не получится иметь вариант работающий как из-под кода так и с листа?
|
|
|
|
|
|
11.02.2025 13:58:52
Ну нельзя так, как мне захотелось, значит нельзя. Но позвольте еще один вопрос по этой функции. Чтобы вызвать ее с листа необходимо указать помимо номера падежа еще и отдельные ячейки с фамилией, именем и отчеством. Если эти данные будут в одной ячейке, то результат будет частично или полностью неверен. Если вызывать функцию кодом, то приходится сооружать примерно такую конструкцию:
|
|||||||
|
|
|
|
11.02.2025 07:03:01
|
|||
|
|
|