使用Vba代码在工作表中显示图像

时间:2015-12-20 11:20:54

标签: excel vba excel-vba

我正在尝试编写一个VBA代码,允许我单击一个单元格并显示图像。

有人已使用此代码video from youtube完成了该操作:

Private Sub Image1_Click()
    Image1.Visible = False
    Range("F1").ClearContents
    Range("A1").Select
    Image1.Picture = LoadPicture("")
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static OldCell As Range
    If Target.Address = "$A$1" Then
        Image1_Click
        Exit Sub
    ElseIf Target.Address = "$A$" & ActiveCell.Row Then
        Range("F1").Value = ActiveCell.Value
        Image1.Visible = True
        Image1.Top = ActiveCell.Top
        Image1.Left = ActiveCell.Offset(0, 5).Left
    End If

    On Local Error Resume Next
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Images\" & Range("F1").Value & ".jpg")
    If Err Then Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Images\Yok.jpg")

    If Not OldCell Is Nothing Then
        OldCell.Interior.ColorIndex = xlColorIndexNone
    End If
    If Target.Address = "$A$" & ActiveCell.Row Then
        Target.Interior.ColorIndex = 6
        Set OldCell = Target
    End If
End Sub

此外,还有另一小段代码"此工作簿"

Private Sub Workbook_Open()
    Sheets("Data").Range("A1").Select
    Sheets("Data").Image1.Visible = False
End Sub

我一直在尝试将此代码调整到我的工作表中,但我无法做到。我在A栏上有一个练习清单,当我点击每个练习时,我希望相关的图片出现在第一列。这个练习列表位于一张名为Analysis的表格上。我的照片位于桌面上名为Exercises的文件夹中。图片在" .PNG"。我不知道这些信息是否相关,但每个练习(列A上的列表)都包含Vlookup函数。

从上面的代码中可以看到图片与所选单元格一致,您可以通过删除以下代码来消除此问题:

 Image1.Visible = True
 Image1.Top = ActiveCell.Top
 Image1.Left = ActiveCell.Offset(0, 5).Left

老实说,如果这段代码可以适应我的情况,我会很高兴,无论如何我更希望图片出现在选定的范围内" I3"。

请不要犹豫与我联系以获取更多信息。 谢谢

这是我的代码改编

Private Sub Image1_Click()
    Image1.Visible = False
    Range("I1").ClearContents
    Range("A3").Select
    Image1.Picture = LoadPicture("")
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static OldCell As Range
    If Target.Address = "$A$3" Then
        Image1_Click
        Exit Sub
    ElseIf Target.Address = "$A$" & ActiveCell.Row Then
        Range("I1").Value = ActiveCell.Value
        Image1.Visible = True
        Image1.Top = ActiveCell.Top
        Image1.Left = ActiveCell.Offset(0, 5).Left
    End If

    On Local Error Resume Next
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Exercises\" & Range("I1").Value & ".PNG")
    If Err Then Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Exercises\Yok.PNG")

    If Not OldCell Is Nothing Then
        OldCell.Interior.ColorIndex = xlColorIndexNone
    End If
    If Target.Address = "$A$" & ActiveCell.Row Then
        Target.Interior.ColorIndex = 6
        Set OldCell = Target
    End If
End Sub

小家伙

Private Sub Workbook_Open()
    Sheets("Analysis").Range("A3").Select
    Sheets("Analysis").Image1.Visible = False
End Sub

当我运行代码时,我得到了错误"对象需要"并突出显示代码行Image1.Visible = True

0 个答案:

没有答案