Другие языки программирования и технологии

Как в exel заменить значение на соответсвующее ему картинку

Здравствуйте. Есть 15 пронумерованных предметов, нужно, что бы при вводе цифры соответсвующий предмету exel изменял его на картику предмета, можно так сделать?
Islam Dadaev
Islam Dadaev
210
Жека Грищенко
Жека Грищенко
93 172
Лучший ответ
Да, без проблем.
На коленке собрал вот такое:
_______________________________________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("A1:C10")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then

If Range(Target.Address).Value = 0 Or IsNull(Range(Target.Address).Value = True) Then

Else
cLeft = Sheets("Sheet1").Range(Target.Address).Left
cTop = Sheets("Sheet1").Range(Target.Address).Top
iWidth = Sheets("Sheet1").Range(Target.Address).Width
iHeight = Sheets("Sheet1").Range(Target.Address).Height

sFotoFileName = "C:\Users\Username\Desktop\" & Range(Target.Address).Value & ".png"
Set oShape = Sheets("Sheet1").Shapes.AddPicture(sFotoFileName, False, True, cLeft, cTop, iWidth, iHeight)
End If

End If
End Sub
__________________________________________________________________

Естественно, тут куча недостатков: нет проверок на значения, поиск картинки сделан максимально грязно - конкатенацией и статичной ссылкой, картинка не изменяет размеры в размер ячейки после вставки (только при самой вставке), не удаляет введенное значение за картинкой.. совершенству нет предела, но это вы уже как-нибудь сами. Функционал по ТЗ тут есть.

Картинки для вставки надо поместить в одну папку и назвать их "1.png", "2.png" и т. д. до "15.png". Ну или не png, можно jpg - всё равно. Путь к этой папке надо написать в строке sFotoFileName = ":\Path.." так же как написано - с .png или .jpg в конце пути.
Диапазон в котором будет реакция на ввод значений указан в 4-й строке: Set KeyCells = Range("A1:C10"). Если надо больше - вписать сюда нужный диапазон.

В принципе всё. Документация по указанным методам есть в официальной документации по Excel VBA. Например вот про Shapes.AddPicture: https://docs.microsoft.com/en-us/office/vba/api/excel.shapes.addpicture
Оно вам как раз понадобится чтобы настроить выравнивание и масштаб картинки.

P.S. А.. да.. если у вас Excel на русском языке и называет листы "Лист1", то либо в коде поменять "Sheet1" на "Лист1", либо переименовать в таблице "Лист1" на "Sheet1".