Страницы: 1
RSS
Необходимо отобразить изображение, в зависимости от значения в ячейке, которое получаем выбором из двух ниспадающих списков.
 
 Добрый день, маги и волшебники.
Много полезного нашел, но все вокруг, да около. А то что, нужно похоже уже не смогу найти, силы меня покинули. А задача в VBA, но я далек от этого мира.
Итак: существует два или три ниспадающих списка, при сочетании значений которых в "X" ячейке появляется текст или значение.
Задача: в зависимости от полученного значения в данной "X" ячейке, должно появляться изображение, которое соответствует именно данному значению.
Простую задачу я решил быстро. Это когда выбираю из списка "Квадрат" и появляется картинка с изображением квадрата. Выбираю "Овал" - появляется изображение овала.
Но необходимо при выборе из первого списка "Квадрат" и из второго списка "Овал" получить значение в ячейке "КвадратоОвал" (или цифровое значение) и (барабанная дробь) появляется картинка квадрата с овалом.
В примере я попытался это воплотить, но видимо без совета мне не решить данный вопрос.
Excel 2016.

Буду безмерно благодарен за ликбез.
С уважением к вам и вашему делу.
 
Цитата
Goldrav написал:
в "X" ячейке появляется текст или значение.
что за "Х" ячейка?
Цитата
Goldrav написал:
должно появляться изображение
где должно появляться?
Цитата
Goldrav написал:
получить значение в ячейке "КвадратоОвал" (или цифровое значение) и (барабанная дробь) появляется картинка квадрата с овалом.
1. Чему равно значение "КвадратоОвал"? (И где хранится рисунок соответствующий?)
2. В какой ячейке получить?
3. Где появляется картинка?
4. Из файла-примера: "...Я убираю ковычки и мне вылетает ошибка, "expected: end of statement" и выделяется запятая...." В Вашем VBA дробная часть отделяется не запятой, а точкой (зависит от настроек ПК).
5. Выражение из вашего кода типа:
Код
Sheets("Лист2").Kvadrat.Visible = Target = "Квадрат"
даст результат:
или
Код
Sheets("Лист2").Kvadrat.Visible = True
, или
Код
Sheets("Лист2").Kvadrat.Visible = False
в зависимости от того, верно ли (True) или неверно (False) выражение
Код
Target = "Квадрат"
М.б. я ошибаюсь, но по-моему, Вы пытаетесь освоить VBA "методом тыка", а лучше бы для начала прочитать какую-н. базовую книжку по программированию в VBA. Сэкономите время.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил, здравствуйте.
Спасибо за рассмотрение моего вопроса. Вы правы, я изучаю этот вопрос набегами, так как при работе по 16 часов в день, не хватает времени на почитать. И тут вы тоже правы, про экономию времени. Но все таки решил попросить совета. Если не найду решения, буду изучать литературу.

И еще, сразу же извинюсь за столь неточную формулировку своей проблемы.
Позвольте я опишу задачу более точечно.

Мы имеем для выбора три параметра: №1, №2, №3 в виде ниспадающих списков (ячейки C2, G2, K2 соответственно). Каждый параметр имеет два значения:
  • №1- Квадрат или Треугольник.
  • №2 - Круг или Овал.
  • №3 - Первый или Второй.
С помощью вкладки "Разработчик" я вставляю на лист Изображения (элемент ActiveX) с соответствующими фигурами. И присваиваю им названия.
Далее в VBA прописываю:
If Target.Address = "$C$2" Then Sheets("Лист2").Kvadrat.Visible = Target = "Квадрат"
If Target.Address = "$C$2" Then Sheets("Лист2").Treug.Visible = Target = "Треугольник"
If Target.Address = "$G$2" Then Sheets("Лист2").Krug.Visible = Target = "Круг"
И так для каждой фигуры (см. прикрепленный файл)
Получаем в итоге отображения картинки с нужной фигурой, при выборе из ниспадающего списка.

Далее задача усложняется, а именно, необходимо сделать так, что при выборе всех трех параметров появилось общее изображение, поясню:
  • выбираем "Квадрат" + "Круг"+"Первый" и должно появиться изображение квадрата с кругом и цифрой "1"
Картинки для всех сочетаний параметров (назовем их коллаж) заранее нарисованы и также вставлены как Изображения (элемент ActiveX). А названия коллажей я перевел в цифры. Поясню:
  • При выборе "Квадрат"  в ячейке D16 получаем значение "1";
  • При выборе "Круг"  в ячейке H16 получаем значение "0.1";
  • При выборе "Второй"  в ячейке L16 получаем значение "0.02";
В итоге получаем в ячейке B19 значение в виде суммы всех трех значений 1,12. Данное значение как шифр или код, по которому понятен выбор параметров.
При данном результате "1,12" должен появиться коллаж с изображением квадрата с кругом и цифрой "2".
или "2,22" - это треугольник с овалом и цифрой "2"
или "2,11" - это треугольник с кругом и цифрой "1"

Для примера я внедрил коллажи и назвал их для удобства "Image112", "Image222" и "Image211"
и когда прописываю:
If Target.Address = "$B$19" Then Sheets("Лист2").Image211.Visible = Target = "2,11"
If Target.Address = "$B$19" Then Sheets("Лист2").Image112.Visible = Target = "1,12"
If Target.Address = "$B$19" Then Sheets("Лист2").Image222.Visible = Target = "2,22"
не появляется соответствующее изображение коллажа.

Если задача понятна, то прошу указать на мои ошибки.
Заранее благодарен.
 
Может кто подскажет в какую сторону двигаться?
 
Цитата
Goldrav написал:
Если задача понятна, то прошу указать на мои ошибки
1. У Вас нет Image222, а есть 221
2. Вместо ...="2,11" (и т.п.) пишите  ...=2.11 (т.е. вместо запятой - точка
3. Target - это активная ячейка. Поэтому вместо
Код
Sheets("Лист2").Image211.Visible = Target = 2.11 
нужно писать
Код
Sheets("Лист2").Image211.Visible = (Range("B19") = 2.11)
4. Слишком часто используете If...Then
5. Я бы вообще по другому сделал :) (например - использовал бы Select Case)
6. В Приемах есть Выбор фото из выпадающего списка, оч. похоже на Вашу задачу, решается без макросов.
Изменено: Михаил Лебедев - 30.10.2019 06:42:32 (Обновил файл)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
Страницы: 1
Наверх