Другие языки программирования и технологии
Как в exel заменить значение на соответсвующее ему картинку
Здравствуйте. Есть 15 пронумерованных предметов, нужно, что бы при вводе цифры соответсвующий предмету exel изменял его на картику предмета, можно так сделать?
Да, без проблем.
На коленке собрал вот такое:
_______________________________________________________________________
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".
На коленке собрал вот такое:
_______________________________________________________________________
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".
Похожие вопросы
- Как сортировать столбцы Exel с одинаковыми значениями?
- EXEL-3.0 Как из одного столба данных исключить значения другого столбца обычному пользователю?
- ЗАЩИТА СЕКРЕТНОГО ФАЙЛА EXEL
- Как правильно выбрать тему для своего сайта? На что обращать внимание? Можно ли заменить картинки темы на свои?
- Формула в Exel
- Скажите, возможна сверка двух файлов формата exel
- VB. Макросы в MS Exel.
- формула Exel HALP!!!!
- Здравствуйте подскажите пожалуйста формулу вычисления процентов в Exel?
- Что такое промежуточные итоги в Exel?