Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Public Sub
СообщениеДобавлено: 24 апр 2022, 16:06 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Кто может помочь с проблемой?

Проблема такая: я написал на VBA несколько полезных функций (модуль Functions) и процедур (модуль Subroutines) и запомнил их на диск под именем Excerllenz.xlam.
Эта папка открывается автоматически, когда я стартую Excel.
Теперь я могу использовать все мои функции в любой другой папке и в любой таблице (функции объявлены как public), а вот с процедурами так не выходит, хотя они тоже объявлены как public.
приходится копировать текст процедур в каждую рабочую папку, чтобы можно было их вызвать. Это очень неудобно.
Что делать?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 24 апр 2022, 16:21 
Не в сети
Beautiful Mind
Зарегистрирован:
22 дек 2019, 21:57
Сообщений: 1863
Откуда: Болгарии
Cпасибо сказано: 65
Спасибо получено:
735 раз в 714 сообщениях
Очков репутации: 144

Добавить очки репутацииУменьшить очки репутации
Exzellenz писал(а):
Эта папка открывается автоматически, когда я стартую Excel

О какой папке идет реч? О XLSTART или другой? А Office пакет какая версия?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 24 апр 2022, 18:20 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Версия MS Ofiice Professional 2016
Папка называется My_Functions.xlam. Я ее создал давно, как я это делал - не помню. Кажется, это скомпилированные программы.
Но тексты этих программ я всегда вижу в окне VBA и могу дополнять новыми программами и запоминать н файле My_Funktions.xlam

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 25 апр 2022, 10:00 
Не в сети
Последняя инстанция
Зарегистрирован:
08 апр 2015, 12:21
Сообщений: 7565
Cпасибо сказано: 229
Спасибо получено:
2748 раз в 2536 сообщениях
Очков репутации: 472

Добавить очки репутацииУменьшить очки репутации
Exzellenz писал(а):
а вот с процедурами так не выходит, хотя они тоже объявлены как public.

А что мешает их оформить как функции?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 25 апр 2022, 10:25 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Функция возвращает только одно значение в ту клетку, из которой она вызвана (или массив значений в односвязную предварительно маркированную область таблицы)
Из функции нельзя записывать инфу в произвольные клетки таблицы.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 25 апр 2022, 10:38 
Не в сети
Последняя инстанция
Зарегистрирован:
08 апр 2015, 12:21
Сообщений: 7565
Cпасибо сказано: 229
Спасибо получено:
2748 раз в 2536 сообщениях
Очков репутации: 472

Добавить очки репутацииУменьшить очки репутации
Exzellenz писал(а):
Функция возвращает только одно значение в ту клетку, из которой она вызвана (или массив значений в односвязную предварительно маркированную область таблицы)

А разве трудно выделить достаточно большую область таблицы (чтобы её задать под результат работы функции как массив), чтобы туда попали все нужные ячейки, значения которых надо изменить?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 25 апр 2022, 11:38 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Вижу, придется мне излагать постановку задачи с самого начала. Я надеялся этой тягомотины избежать.

Итак, задача состоит в том, чтобы аппроксимировать экспериментальные точки теоретической кривой, зависящей от нескольких параметров, которые входят в уравнение нелинейно. Теоретическое уравнение в разных задачах разное.

Я решал задачу следующим образом.
В Excel создавал таблицу с экспериментальными значениями аргумента и функции; третья колонка – значения функции, вычисленные по формуле; четвертая колонка – квадраты разностей [math](Theory-Experiment)^{2}[/math]; еще в одной клетке – невязка (корень из среднего значения квадратов). И, наконец, клетки с параметрами уравнения.

Затем я написал процедуру, которая варьирует параметры в таблице таким образом, чтобы минимизировать невязку. Процедура ничего не знает о том, как выглядит теоретическое уравнение (оно всякий раз по-новому задается в таблице), где находятся параметры, где находится невязка, поэтому соответствующие клетки нужно маркировать перед вызовом процедуры. Процедура записывает в нужные места таблицы новые значения коэффициентов и считывает значение невязки до тех пор, пока невязка не достигнет минимума.

Функция на такие подвиги не способна.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 07 май 2022, 21:56 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
...

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 08 май 2022, 10:25 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Эврика!
Оказалось, что, хотя процедуры из собственных надстроек Add-In не видны в стандартном окне вызова макросов(Alt+F8), если набрать в этом окне имя процедуры, то она нормально вызывается. Чтобы не запоминать имена всех процедур, достаточно в панели быстрого доступа создать кнопку, вызывающую нужный макрос.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Public Sub
СообщениеДобавлено: 11 май 2022, 12:41 
Не в сети
Beautiful Mind
Аватара пользователя
Зарегистрирован:
21 дек 2021, 01:39
Сообщений: 1753
Cпасибо сказано: 81
Спасибо получено:
329 раз в 315 сообщениях
Очков репутации: 70

Добавить очки репутацииУменьшить очки репутации
Еще один вопрос, теперь не по процедурам, а по функциям.

В Excel есть встроенные матричные функции (например, MINV), которые возвращают в таблицу не одно значение, а массив.
Чтобы вывзать такую функцию, нужно маркировать в таблице правильное число клеток, вписать в активную клетку формулу, а потом задействовать клавиши Control, Schift и Enter.

Я написал собственную функцию, которая возвращает одномерный массив значений, но она работает не совсем так, как хотелось бы. В частности, она возвращает правильные значения только в строку, а в столбец не хочет.
В этой связи у меня вопросы:

1) Как сделать, чтобы функция возвращала значения как в строку, так и в столбец (в соответствии с тем, что маркировано - строка или столбец)?
2) Что делать, если размер возвращаемого массива заранее неизвестен? Что маркировать?

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему      Страница 1 из 1 [ Сообщений: 10 ]

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved