2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 VBA: матричная ф-ция, реагирующая на ctrl+shift+enter
Сообщение15.10.2018, 21:01 


10/03/16
3872
Aeroport
Добрый день всем. В Excel есть функции, возвращающие не одно значение, а матрицу. При этом мы выделяем массив под конечный результат, вводим функцию, аргументы и жмём ctrl + shift + enter. Так устроены скажем функция мумнож() или мобр().

Я начал разбираться с тем, как писать функции на VBA. Пишут, что такая функция возвращает одно значение. А если я хочу написать типа свой мобр()? Как мне Каким должен быть заголовок функции и как правильно возвратить наружу матричный выходной аргумент? Заранее спасибо

 Профиль  
                  
 
 Re: VBA: матричная ф-ция, реагирующая на ctrl+shift+enter
Сообщение15.10.2018, 21:18 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
У VBA есть объект Selection, который является ссылкой на текущий выделенный диапазон. Заполняйте его значениями прямо внутри функции. Правда, с функциями, возвращающими матрицу, я не работал, возможно, есть другой способ.

-- 15.10.2018, 22:22 --

Стандартные функции, доступные для использования в ячейках, в VBA содержатся в объекте WorksheetFunction. Можете поискать их в библиотеке объектов, там можно найти сигнатуры.

 Профиль  
                  
 
 Re: VBA: матричная ф-ция, реагирующая на ctrl+shift+enter
Сообщение15.10.2018, 21:31 


10/03/16
3872
Aeroport
rockclimber в сообщении #1346526 писал(а):
У VBA есть объект Selection, который является ссылкой на текущий выделенный диапазон.


Точно! Надо попробовать так.

 Профиль  
                  
 
 Re: VBA: матричная ф-ция, реагирующая на ctrl+shift+enter
Сообщение16.10.2018, 02:17 
Заслуженный участник


16/02/13
4105
Владивосток
Вообще, программирование на VB в Excelе стоит начинать с включения режима записи и выполнения действия руками. Потом можно посмотреть код и подправить. Selection сопряжён с визуальными эффектами, что лишнее, имхо. Лучше использовать, кажется, Range.

 Профиль  
                  
 
 Re: VBA: матричная ф-ция, реагирующая на ctrl+shift+enter
Сообщение16.10.2018, 09:38 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
iifat в сообщении #1346593 писал(а):
Вообще, программирование на VB в Excelе стоит начинать с включения режима записи и выполнения действия руками.
Это да, но до самых интересных и мощных штук в экселе так не доберешься, к сожалению.
iifat в сообщении #1346593 писал(а):
Selection сопряжён с визуальными эффектами, что лишнее, имхо.
Не совсем так. Если просто записать макрос, то вы увидите там слишком много лишних движений - выделение каждой ячейки (что-нибудь вроде Range("A1").Select), включение режима копирования и прочее. Все это совершенно не нужно в итоге (и рано или поздно вы к этому придете). И именно это и вызывает все "визуальные эффекты". Вот недавний топик - «Старый Excel-файл со старым макросом [Excel 2003]» - там ка раз приведен макрос, который "просто записали и всё". А объект Selection - это просто ссылка на диапазон выделенных ячеек. И кстати, по сути тот же Range.
Ну и конечно, все визуальные эффекты отключаются строчкой
Код:
Application.ScreenUpdating = False
в начале макроса. Это ускоряет выполнение в несколько раз даже самого оптимизированного макроса (конечно, сила эффекта зависит от того, насколько активно вы перезаписываете ячейки).

 Профиль  
                  
 
 Re: VBA: матричная ф-ция, реагирующая на ctrl+shift+enter
Сообщение16.10.2018, 15:49 
Заслуженный участник


27/04/09
28128
Про последнее спасибо. :appl:

 Профиль  
                  
 
 Re: VBA: матричная ф-ция, реагирующая на ctrl+shift+enter
Сообщение16.10.2018, 15:52 


10/03/16
3872
Aeroport
arseniiv в сообщении #1346750 писал(а):
Про последнее спасибо


Присоединяюсь

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group