|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
||||||
Excel Макрос. Поиск начала и конца нескольких диапазонов15.10.2019, 11:44. Показов 2353. Ответов 15
Добрый день!
Помогите, пожалуйста, кто разбирается с макросами. Есть необходимость создания формы, где перед пользователем, при выборе значения из выпадающего списка, должны открываться соотвествующее число диапазонов. Например при выборе значения "2", будут раскрываться во всех пунктах по два подпункта. Проблема в том, что при добавлении строк, рэнджи на которые ссылается макрос, съезжают. Вопрос: как можно прописать макрос, чтобы либо не съезжали рэнджи (по аналогии как работает "А$1$:C$1$"), либо осуществлялся поиск начала и конца рэнджа по уникальному значению. Количество рэнджей будет около 300, количество редактируемых ячеек с выпадающим списком около 50. возможно кто-то еще знает как упростить макрос. Буду очень благодарен за Ваши советы и решения! Ниже представлен мой код, а также прикреплен сам файл excel:
0
|
||||||
| 15.10.2019, 11:44 | |
|
Ответы с готовыми решениями:
15
Макрос для проверки двух диапазонов данных Вывод нескольких диапазонов из БД |
|
ᴁ ©
|
|
| 15.10.2019, 14:31 | |
|
Archi992, я раза 4 перечитал задачку.... Не пойму для чего штаны через голову надевать...
Ну съезжать ничего не будет если массивы располагать горизонтально а вертикально. Как должна выглядеть форма? Вы бы ее нарисовали. Понять было бы проще понять что вам требуется. В VBA эксэль ничего не адаптировал и похоже не будет. Для этого используют относительные ссылки типа Cells(1, 1).CurrentRegion.Rows.Count
1
|
|
|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
|
| 15.10.2019, 15:34 [ТС] | |
|
"Ну съезжать ничего не будет если массивы располагать горизонтально а вертикально." - это как?
Форму я прикладывал к теме, прикреплю еще раз. Попробую разъяснить суть задачки, может я действительно не с той стороны подошел к вопросу. У меня есть форма отчета, в которой очень много пунктов и количество подпунктов в них зависит от определенного значения. Например, у есть пункт "Кол-во этапов строительства", где пользователю предлагается выбрать соответствующую цифру из выпадающего списка. Далее, если допустим было выбрано "5", то в следующих пунктах должны развернуться по 5 подпунктов для заполнения. В некоторых пунктах есть значение "не требуется" и тогда содержимое этого пункта полностью сворачивается. Также в модуле листа прописан код, чтобы запускался макрос при редактировании определенной ячейки. Прописав соответствующие коды я смог добиться корректной работы макроса, но осталась проблема с добавлением\удалением строк. Рэнджи макроса съезжают.
0
|
|
|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
|
| 15.10.2019, 15:39 [ТС] | |
|
прикрепляю файл.
Макрос 1 - это изначально поставленный под вопрос макрос. Макрос 2 - это уже доработанный макрос, с использованием именованных ячеек. Но тут проблема в том, что модель листа ссылается на ячейку, которая запускает макрос... оно так и должно работать по задумке.. но ячейка активирует макрос только при непосредственном ее редактировании. Как сделать так, чтобы макрос запускался именно при любом изменении ячейки: Private Sub Worksheet_Change(ByVal cc As Range) If cc.Address = "$J$2" Then Call MACRO1 End If End Sub
0
|
|
|
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
|
||||||
| 15.10.2019, 15:42 | ||||||
|
Archi992,
попробуйте для вашего файла
1
|
||||||
|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
|
| 15.10.2019, 15:58 [ТС] | |
|
Возможно кто-то подскажет как еще возможно выполнить поставленную задачу или упростить\усовершенствовать имеющийся подход.
Буду очень благодарен за помощь и советы ![]() Добавлено через 14 минут Narimanych, а можете пояснить что делает этот код? Как для чайника, пожалуйста
0
|
|
|
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
|
||||||||||||
| 15.10.2019, 16:15 | ||||||||||||
1
|
||||||||||||
|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
|
| 15.10.2019, 16:59 [ТС] | |
|
АЕ, смотрите внимательней выше.
Прикреплен ZIP архив.
0
|
|
|
ᴁ ©
|
|||||||
| 15.10.2019, 17:08 | |||||||
|
Archi992,
можно написать так: 24*12 = 298 а можно так 24+24+24+24+24 и так 12 раз...... При расположении в ряд ваших таблиц, а не в столбик (я писал об этом) Ваш код можно заменить несколькими строками
0
|
|||||||
|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
|
| 15.10.2019, 17:16 [ТС] | |
|
АЕ, спасибо, что посмотрели.
Возможно, действительно, будет понятней, если взглянуть на сам отчет. Прикрепляю в архиве "Форма". Поэтому Ваше предложение по поводу писать в строку отпадает. Буду признателен за полезные советы.
0
|
|
|
ᴁ ©
|
||
| 15.10.2019, 20:56 | ||
|
Позже (по настроению) сооружу универсальную подпрограмму. Она может помочь доработать ваш отчет.
0
|
||
|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
|
| 15.10.2019, 21:33 [ТС] | |
|
АЕ, спасибо за уделённое время) буду благодарен за Вашу помощь!
0
|
|
|
ᴁ ©
|
||||||
| 15.10.2019, 21:35 | ||||||
|
Ну вот наваял небольшое.....
Файл с применением выложить? Добавлено через 2 минуты Остальное можете допилить по аналогии
1
|
||||||
|
0 / 0 / 0
Регистрация: 08.10.2019
Сообщений: 8
|
|
| 15.10.2019, 21:40 [ТС] | |
|
АЕ, спасибо большое) завтра доберусь до компьютера и буду разбираться. По аналогии будет уже проще делать) файл с применением тоже будет не лишним)
0
|
|
| 15.10.2019, 21:40 | |
|
Помогаю со студенческими работами здесь
16
Макрос для вставки значений из двух именованных диапазонов
Выполнение условия после проверки нескольких диапазонов Среднее значение для нескольких диапазонов по условию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|