EXCEL VBA 显示图片

2025-02-25 09:16:52
推荐回答(3个)
回答1:

有两种情况:

  1. 如果图片显示到整个单元格的话,可以直接在Y2单元格写没有这个图片。

  2. 然后如果有图片会把字覆盖,看不见,没有图片则可以看见字,不需要代码写这个。


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Target.Count = 1 And Target.Column = 4 Then

        On Error Resume Next

        Shapes("@@@@@").Delete

        If Dir(ThisWorkbook.Path & "\" & Target.Value & ".jpg") <> "" Then

            [Y2] = ""

            ActiveSheet.Shapes.AddPicture(ThisWorkbook.Path & "\" & Target.Value & ".jpg", 1, 1, [Y2].Left + 5, [Y2].Top + 5, [Y2].Width - 10, [Y2].Height - 10).Name = "@@@@@"

        Else

            [Y2] = "没有这个图片"

        End If

    End If

End Sub

回答2:

插入图片也直接用控件picture来显示,这样方便编程

回答3:

1)
Sub Macro5()
Dim xlsheet As Worksheet
Set xlsheet = ActiveSheet
With xlsheet.Pictures.Insert("F:/A/a.jpg")
.ShapeRange.LockAspectRatio = msoTrue
.ShapeRange.Line.Visible = msoTrue
.ShapeRange.Left = xlsheet.Range("A1").Left
.ShapeRange.Top = xlsheet.Range("A1").Top
.Visible = True
End With
End Sub

2)插入Image1控件
Image1.Picture = LoadPicture("F:/A/a.jpg")

if语句有误
Private Sub Image2_Click()
'Image2.Picture返回的是对象,LoadPicture("")返回的结果是Nothing,不是True或False
If Image2.Picture Is Nothing Then

Image2.Picture = LoadPicture("D:\1.jpg")
Else

Image2.Picture = LoadPicture("")

End If

End Sub