Страницы: 1
RSS
Вставка картинок в ячейки в соответствии с числовым кодом, приведенным в таблице
 
Здравствуйте.

Подскажите - как решить следующий вопрос.
В таблице T4:U12 напротив чисел - стоят адреса конкретного файла-рисунка.
На листе экселя - в случайных местах расставлены числа, совпадающие с числами из таблицы.

Как макросом расставить рисунки из соответствующих адресов, указанных в таблице - по этим ячейкам (так чтобы они растянувшись вписались точно в ячейку) ?
 
Это новая версия Тетриса ?  :)
Пожалуйста, попробуйте:
Код
Option Explicit

Dim sNme$

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    sNme = Trim(Target(1).Value)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iPath, fleNme$, cNme$: cNme = Trim(Target(1).Value)
Dim krtn As Shape

    If Not Intersect(Target(1), Range("tabris")) Is Nothing Then Exit Sub
    '------------------------------------------------------------------------------------------------------------
    If sNme <> "" And cNme = "" Then
        On Error Resume Next
        ActiveSheet.Shapes(sNme).Delete: Exit Sub
        On Error GoTo 0
    End If
    '------------------------------------------------------------------------------------------------------------
    'Variant 1a - 'VLookup'
    'iPath = Evaluate("VLookup('List3'!" & Target(1).Address & ",'List3'!" & Range("tabris").Address & ", 2, 0)")
    'If IsError(iPath) Or iPath = 0 Then Exit Sub
    '------------------------------------------------------------------------------------------------------------
    'Variant 1b - 'VLookup'
    'iPath = Application.VLookup(Target(1).Value, Range("tabris"), 2, 0)
    'If IsError(iPath) Or IsEmpty(iPath) Then Exit Sub
    '------------------------------------------------------------------------------------------------------------
    'Variant 2 - 'Match'
    iPath = Application.Match(Target(1).Value, Range("tabris").Columns(1), 0)
    If IsError(iPath) Then Exit Sub
    iPath = Range("tabris").Cells(Application.Match(Target(1).Value, Range("tabris").Columns(1), 0), 2).Value
    If IsEmpty(iPath) Then Exit Sub
    '------------------------------------------------------------------------------------------------------------
    fleNme = Dir(iPath, vbNormal)
    If fleNme = "" Then Exit Sub
    '------------------------------------------------------------------------------------------------------------
    Set krtn = Me.Shapes.AddPicture(iPath, msoFalse, msoTrue, Target(1).Left, Target(1).Top, Target(1).Width, Target(1).Height)
    With krtn
        Application.EnableEvents = False
        Target(1).Value = .Name
        Target(1).Font.ColorIndex = 2
        Application.EnableEvents = True
        .Placement = xlMove
        .ControlFormat.PrintObject = True
        .LockAspectRatio = msoTrue
    End With
    Set krtn = Nothing
End Sub
 
Например так (диапазоны уже поменяете под свои)
Скрытый текст

Функция вставки картинок взята отсюда и чуть подправлена.
Изменено: Dima S - 15.05.2018 03:13:41
 
ocet p, работает. Спасибо.
Изменено: Алексей Альтман - 15.05.2018 05:26:41
 
Dima S, тоже все работает.
Спасибо.
Страницы: 1
Наверх