Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Sanja, всё - штатным образом:
1. Ткнуться в лист "Спектр";
2. Скопировать его под новым именем (хоть по умолчанию, "Спектр(2)");
3. Вернуться на лист "Сетка частот";
4. Ткнуться правой кнопкой в верхнюю диаграмму (где амплитудный спектр и мегагерцы);
5. И "выбрать данные" (в 2003 - "Исходные данные") в диапазоне "H:I" на любом из "спектральных" листов.
После этого верхняя диаграмма должна обозваться как "Спектральная плотность (ЫЫЫ)", а нижняя - как "Данные (ЫЫЫ)",
где ЫЫЫ - имя соответствующего листа.
При этом верхняя диаграмма, естественно, нарисует кривую по столбцам "H:I", а нижняя - по столбцам "A:B" выбранного листа.
По задумке Вашего покорного слуги, это должна сделать подпрограмма "имя_листа", а помогает ей в этом благом деле - "оформление_данных", обе из модуля "Графики" (первая и вторая).  
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Sanja, извините за назойливость: там - сложно (не-универсально), или просто недосуг?
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Sanja, не влез у меня файл без упаковки!
Там - xls на 381к, а переход на xlsx делает файл нерабочим.
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Друзья, я опять с тем же.
Учтя (как смог) ваши советы, создал прикладную программу для спектрального анализа. Она позволяет тиражировать листы сигналов с ручным подбором сетки частот. При этом при выборе анализируемого спектра (столбцы H:I на листах типа "Сигнал) в названии диаграммы "Спектральная плотность" листа "Сетка частот" должно выскакивать название "сигнального листа", которое затем добавляется добавляется к названию диаграммы "Данные". Всё это реализовано в модуле "Графики", п/п "имя_листа" и "оформление_данных". И ведь всё прекрасно работает, но - только в офисе 2003. Если кому не лень, подправьте пожалуйста , текст для сохранения его работоспособности в 2013-м!
С уважением...
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Всё, с частным случаем - разобрался.
.
https://vremya-ne-zhdet.ru/vba-excel/funktsiya-split-parametry/
.
А вот просьба объяснить, как устроен мир - вопрос, похоже, "не по зарплате"... :)
Изменено: Алексей Вячеславович - 16.05.2025 12:05:47 (дополнил ссылкой)
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Sanja, уточняющий вопрос:
К чему относится "единица" в конце этой строчки.
shName = Split(.SeriesCollection(1).Formula, "'")(1).
и что она означает?

Как я понял (возможно - ошибочно), что на последней ступени цепочки "заклинаний".
Split(Me.myChartClass.SeriesCollection(1).Formula, "'").
мы получаем некий текстовый вектор, первой координатой которого является заголовок "моего чата".
Если так, то - где можно подоходчивей (и - ПО-РУССКИ !) ознакомиться со ВСЕЙ "лестницей"?
А если не так, то - как?
Изменено: Sanja - 16.05.2025 14:30:28
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Sanja, ещё и ещё раз - СПАСИБО !
Я взял их файла лишь один требуемый (на тот момент) аспект решения, не догадываясь об остальных...
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Дорогие коллеги, покажите, пожалуйста, как сделать так, чтобы в этом примерчике при штатном выборе диапазона данных диаграммы (ручном, на произвольных листах ЭТОЙ ЖЕ книги) в заголовке диаграммы выскакивало название листа данных.
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Sanja, ну так , вот это - по-нашему! По-бразильски!
Спасибо сердечное, и земной поклон!
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Sanja, растолкуйте, пожалуйста - для дурака - КАК это можно (было бы!) "создать"?
Прилагаемый пример иллюстрирует ПРЯМУЮ задачу (покрасить бордюр), а меня интересует задача ОБРАТНАЯ (запустить процесс (!) по факту "покраски бордюра"). И я не знаю, "С чего начать?" и "Что делать?"
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Запуск макроса по событию изменения исходных данных диаграммы, Событие изменения параметров диаграммы
 
Коллеги, научите, пожалуйста использовать выбор исходных данных  диаграммы в качестве события, запускающего нужный мне макрос.
Конкретно:
В данном примере (проба.xls) имеется диаграмма, отображающая исходные данные, расположенные на определённом листе. Имя этого листа выскакивает при нажатии кнопки.
Как сделать так, чтобы это имя выскакивало сразу после выбора этих данных посредством контекстного меню данной диаграммы?
Изменено: Sanja - 15.04.2025 18:09:52
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Как поменять ссылки на данные в графиках
 
Цитата
написал:
.Formula
Спасибо большущее.
Буду знать, что если хочется, чтоб при выходе из макроса на столе появлялась бутылка, то в скрипт надо ввести команду:
.
Application.SgonyatVmagazin
:)
.
Дорогие коллеги, если у кого есть желание/возможность добавить мне вишенку на тортик, помогите, пожалуйста сделать следующее:
.
В прилагаемом файле (проба.xls) график иллюстрирует поведение данных, размещённых в столбцах A:B на выбранном листе данной книги. При этом имя выбранного листа появляется при нажатии соответствующей кнопки.
.
Как сделать так, чтобы это имя появлялось сразу после выполнения команды "Выбрать данные" из контекстного меню диаграммы?
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Как поменять ссылки на данные в графиках
 
Коллеги, добрый день. Тупой вопрос:
Программа перебирает графики на активном листе
ActiveSheet.ChartObjects(i)
Как можно прочесть, с каких ЛИСТОВ берутся данные для каждого из графиков?
Изменено: Алексей Вячеславович - 14.04.2025 15:20:54 (орфография)
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Удалить имена в диспетчера имен с помощью VBA, Макрос для удаления имен
 
Спасибо, Дмитрий. Ваше желание помочь мне ещё пригодится.
В заблуждение меня ввела языковая структура "Each ... in .Names". В прошлый раз на подобные лингвистические грабли я наступил, покупая бескаркасные щётки для а/м. Что можно было понять и как "Щётки, которым не хватает каркаса", и как "Каркас и не требуется". И я понял неправильно...
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Удалить имена в диспетчера имен с помощью VBA, Макрос для удаления имен
 
Дмитрий(The_Prist) Щербаков, кажется, о чём-то начинаю догадываться.

Когда я писал

For Each диапазон in ThisWorkBook.Names

то был убеждён, что перебираются именно ИМЕНА.

А перебираются - ДИАПАЗОНЫ, у которых ЕСТЬ имена...

Эпическая сила!...
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Удалить имена в диспетчера имен с помощью VBA, Макрос для удаления имен
 
Дмитрий(The_Prist) Щербаков, здравствуйте. Рад вновь Вас слышать.

Требуется лёгкий ликбез.

Я в своей программе работаю с "выкройками" кубических поверхностей, которые "расписываю" некими функциями.
Выкройки располагаю на 6 листах (А-Б-В-Г-Д-Е). При этом центральные (базовые) грани  обзываю именованными диапазонами книги
(А.1-А.2-...-А.18 на листе А; Б.1-Б.2-...-Б.18 на листе Б ; и т.д. до листа Е),
а проекции боковых - приклеиваю к ним с соответствующей стороны и обзываю именованными диапазонами листа

(На листе А:
А.1в, А.1н, А.1л и А.1п - вокруг А.1;
А.2в, А.2н, А.2л и А.2п - вокруг А.2;
...
А.18в, А.18н, А.18л и А.18п - вокруг А.18;

На листе Б:
Б.1в, Б.1н, Б.1л и Б.1п - вокруг Б.1;
Б.2в, Б.2н, Б.2л и Б.2п - вокруг Б.2;
...
Б.18в, Б.18н, Б.18л и Б.18п - вокруг Б.18;

и т.д. до листа Е )

Получается на каждом листе по 18 "крестов", в центрах которых - именованные диапазоны книги, а по краям - именованные диапазоны соответствующего листа.

Обзывание ведётся стандартными процедурами:

Dim WS as WorkSheet

For Each WS in ThisWorkBook.Sheets

   For i = 1 to 18

      S = WS.Name & "." & i

       ThisWorkBook.Names.Add Name := S, RefersToR1C1:=.....

       WS.Names.Add Name := S & "л", RefersToR1C1:=.....
       WS.Names.Add Name := S & "п", RefersToR1C1:=.....
       WS.Names.Add Name := S & "в", RefersToR1C1:=.....
       WS.Names.Add Name := S & "н", RefersToR1C1:=.....
................................................................................................
     
Кубы - переменной размерности, поэтому по ходу работы приходится очищать книгу от одних имён и переназначать их на другие диапазоны.

И вот тут я обнаружил, что в цикле:

Dim диапазон As Name

For Each диапазон in ThisWorkBook.Names
   If диапазон = ... Then ActiveWorkBook.диапазон.Delete
...................................................................................................

именованные диапазоны - обрабатываются, но имена их - НЕ УДАЛЯЮТСЯ,

а в цикле:

Dim диапазон As Object

For Each диапазон in ThisWorkBook.Objects
   If диапазон = ... Then ...
...................................................................................................

имена - НЕ ЧИТАЮТСЯ.

При этом средствами Excel-я удаление - происходит, но  в VBA "проявляются" старые (использовавшиеся ранее) имена, НЕ ОТОБРАЖАЮЩИЕСЯ в Excel-евском списке.

"Кого любить? Чему же верить?" (не моё:)
Изменено: Алексей Вячеславович - 13.03.2025 15:32:38 (правка текста)
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Удалить имена в диспетчера имен с помощью VBA, Макрос для удаления имен
 
БМВ, добрый день.
Я работаю с именами как "As Name". И всё бы ничего, но иногда это имя нужно "Delete". И вот здесь... как с гуся вода.
А если я обращаюсь к именам как "As Object", то я не могу прочесть название этого имени:

Dim ЫЫЫ As Object
...
If ЫЫЫ.Name = ... Then

Посоветуйте, пожалуйста, как быть.
Изменено: Алексей Вячеславович - 12.03.2025 18:34:23
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
БМВ, "без цикла и одной строкой" всё делается - в простейшем случае параллельного переноса фрагментов листа. Если предполагается попутная трансформация (поворот массивов ячеек на 90/180 или зеркальная симметрия) либо внутренние текстовые преобразования, то без цикла не обойтись. При этом мой способ адресации облегчает структурирование процедуры, ибо позволяет опираться на внешние границы областей и работать в локальных координатах, сохраняя конформность преобразований.
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
БМВ, осознал.
В завершение - привожу искомую формулу (в цикле по i/j, вдруг кому сгодится...):

Sheets("Лист1").Range("Д1").Cells(i,j).Formula = "=" & Range("Д0").Cells(i,j).Address(External:=True)

Это - работает!
Изменено: Алексей Вячеславович - 11.03.2025 09:25:57 (добавил "=")
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Коллеги, простите, я - опять, лбом да в ту же стену

Имеются (заданы):
- Именованный диапазон книги "Д0", и
- Именованный диапазон листа "Д1", расположенный на листе "Лист1".

Оба диапазона - размерности N*N.

Как "малой кровью" сделать так, чтобы диапазон "Д1" заполнился формулами вида "= RiCj" где i и j - координаты ячеек диапазона "Д0" (1, 2,...N) ?
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
sokol92, Владимир, спасибо! У меня это организовано на всех листах, КРОМЕ ИД.

Там-то все хабчики и валяются...
Изменено: Алексей Вячеславович - 07.03.2025 15:50:55
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Aлeкceй, я не смог прикрепить файл к личке.
И заодно: просветите, пожалуйста, отчего так "распух" ПУСТОЙ файл? В моём 2003-м он занял почти 3М, пришлось трансформировать в .xlsx и зазиповать? Я ведь предусмотрел очистку форматирования и удаление пустых строк/столбцов...
Галочки "Форматирование" предназначены для подсветки именованных диапазонов на этапе отладки. Перех закрытием файла они убираются.

P.S. Про размер файла - уже не надо, Владимир объяснил.
Изменено: Алексей Вячеславович - 07.03.2025 14:30:43 (добавил)
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Друзья, спасибо за помощь! Приму ваши советы к сведению (всё, что смогу принять :)
Уважаемый тёзка, сейчас корплю над заготовками. Когда созрею, обязательно обращусь за помощью. Если не возражаете, в личку.
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Уважаемый Hugo, благодарю за наводку!
Кажется, то, что мне нужно, лежит здесь:

https://yourtodo.life/ru/posts/vba-i-postgresql/

Если Вас не затруднит, подбросьте что-нибудь для ликбеза.
Для старика на седьмом десятке... :)
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Уважаемый Hugo, я не нашёл Ваших предыдущих сообщений.

Возможно, я невнятно задал вопрос.
Когда Эксель открывает файл, он все свои таблицы ЦЕЛИКОМ перегоняет в ОЗУ, или есть возможность скоростной обработки фрагмента? Типа: все таблицы сидят на "винте", а в ОЗУ - только переменные и массивы?

Ещё раз прошу прощения за детские вопросы...
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Друзья, неужели я - первый, перед кем встали подобные вопросы?
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Обработка больших массивов содержащих формулы, оптимизировать работу кода
 
Уважаемые коллеги!
Тема заявлена настолько широко, что объяла и мою проблему. Заранее прошу прощения за дилетантизм.
Ищу способы, ускоряющие работу и экономящие память при общении с большими таблицами.

Для начала: как сделать так, чтобы содержимое таблиц оставалось на жёстком диске, а в ОЗУ вызывался только фрагмент, с которым работает активная подпрограмма? И какими настройками можно максимизировать долю ОЗУ, выделяемую под нужды Экселя?

Ещё вопрос: что быстрее сработает,
операция A = Range("диапазон 1") с последующим циклом по всем индексам массивов "B(i2,j2) = A(i1,j1)" и Range("диапазон 2") = B
или
процедура ActiveSheet.Calculate (на фоне Application.Calculation = xlCalculationManual) над листом, в котором "диапазон 2" заполнен формулами "= R1C1", ссылающимися на "диапазон 1"
?

Буду признателен за любые идеи и не обижусь на тыканье носом.
Изменено: Алексей Вячеславович - 04.03.2025 16:57:40 (дополнил)
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
VBA: удалить повторяющийся путь "oExcel.ActiveWorkbook.ActiveSheet.Range"
 
Дмитрий,
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
VBA: удалить повторяющийся путь "oExcel.ActiveWorkbook.ActiveSheet.Range"
 
На посошок:

"А, видимо, действительно дело в этом - у тебя явно прописано, на каком листе находится Range, но не прописано, на каком листе находятся Cells, поэтому если активный лист не совпадает с листом table, происходит ошибка."

(ответ с форума 20-летней давности :))
http://bbs.vbstreets.ru/viewtopic.php?f=7&t=27850
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
VBA: удалить повторяющийся путь "oExcel.ActiveWorkbook.ActiveSheet.Range"
 
Спасибо за науку, дорогие коллеги! Пошёл грызть гранит...
Кто хочет - ищет способы.
Кто НЕ хочет - ищет причины...
Страницы: 1 2 След.
Наверх