Страницы: 1
RSS
Перевод динамической ссылки на фотографию в пользовательскую функцию на VBA
 
Здравствуйте уважаемые эксперты excel.
Нашел один интересный прием под название «Выбор фото из выпадающего списка».
http://www.planetaexcel.ru/techniques/22/39/
В этом приеме используют динамическую ссылку на выбранную фотографию в виде формулы.
=СМЕЩ(Лист3!$A$1;ПОИСКПОЗ($F$1;Лист3!$B:$B;0)-1;0;1;1)
Возможно, ли эту формулу преобразовать в пользовательскую функцию на VBA? В ячейки F1 находится аргумент, по которому формула ищет фото, нужно чтобы вместо F1 мы за счет пользовательской функции сами выбирали ячейки с аргументами.  
Изменено: Даниил - 11.08.2016 16:30:47
 
Цитата
Даниил написал:
вместо F3 мы за счет пользовательской функции сами выбирали ячейки с аргументами
Это как? Что мешает в эту формулу, вместо F1 вставить F3?
Согласие есть продукт при полном непротивлении сторон
 
Т.е. везде F1, я опечатался  
 
Суть в том что если использовать не одну картинку а множество, то для каждой картинки придется в диспетчере имен прописывать код СМЕЩ(Лист3!$A$1;ПОИСКПОЗ($F$1;Лист3!$B:$B;0)-1;0;1;1) , только единственное для каждое картинки будет свой аргумент. А если написать пользовательскую функцию, то каждый раз для отдельной картинки не придется создавать формулу в диспетчере имен.  
 
А почему Вы не используете Имена в формуле, как в примере?  
Согласие есть продукт при полном непротивлении сторон
 
Нет смысла, если можно обойтись и без них, можно вместо имени указать диапазон. Но суть не в этом, суть в том как эту формулу можно переписать в пользовательскую функции на VBA, где в итоге аргументом пользовательской функции будет указываться ячейка F1. Кто знает прошу помочь.  
 
Вот. Даже две функции:
 
UDF написать можно, но сможете ли вы её привязать к рисунку? плюс не вижу особой выгоды от пользовательской функции, ведь всё равно придётся связывать формулы и рисунок.
Если рисунков очень много, то наверное лучше создавать рисунки макросом VBA и привязывать к ним нужные ссылки.
 
Но к сожалению таким способом все равно придется создавать для каждого изображения которое должно меняться свое собственное имя, но все равно ваше решения немного облегчает задачу. Спасибо))  
 
Цитата
Zoynels написал:
Если рисунков очень много, то наверное лучше создавать рисунки макросом VBA и привязывать к ним нужные ссылки.
А вы где ни будь встречали такой макрос? Да рисунков очень много и приходится вручную связывать((  
 
Цитата
Даниил написал: А вы где ни будь встречали такой макрос?
Конкретно под Вашу задачу - это вряд-ли. Если решили использовать макросы (UDF) то может стоит пересмотреть подход к решению задачи в корне? Совсем перейти на макросы? Опишите максимально подробно задачу, приложите файл-пример (Как есть - Как надо)
Согласие есть продукт при полном непротивлении сторон
 
 
Цитата
Sanja написал: может стоит пересмотреть подход к решению задачи в корне?
Да, нужно пересмотреть, потому что как я хотел, явно не получится. Попробую максимально описать задачу.

Допустим, есть огромная таблица из двух столбцов. В первом столбце «A» изображения, которые привязаны к значению соседних ячеек, в столбце «B» название телефонов. Вся трудность состоит в том что значения в столбце «B» постоянно меняются, и для каждого изображения нужно создать свое собственное имя в диспетчере имен. Вот пример где таблица только из четырех строчек.  
 
Как-то так
 
RAN, спасибо большое, то что нужно было, вы словно волшебник из сказки  :D  
 
RAN, подскажите пожалуйста, а можно ли как ни будь изменить код чтобы изображение менялось не только после того как значения в соседней ячейке (название телефонов) вписали вручную, а после того как эти значения изменились за счет формулы?  
 
для этого нужно использовать:
Код
Private Sub Worksheet_Calculate()

End Sub
вместо
Код
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
 
Я уже до этого пробовал менять, код не работает  
Страницы: 1
Читают тему
Наверх