在“EXCEL”中的图片,能否按条件显示?

2025-03-25 05:35:17
推荐回答(2个)
回答(1):

在EXCEL中的图片,能按条件显示,前提是先要将图片的名字先变号。然后用下面的函数:

注:引号里面的为条件。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, ML, MT, MW, MH
On Error Resume Next
ActiveSheet.DrawingObjects.Delete
If Cells(1, 1) = "亚特兰大" Then 'Cells(1, 1):括号前面数字表示行号、后面数字表示列号 ;
Sheets(2).Shapes(1).Copy 'Sheets(2)表示工作表“Sheet2”;Shapes(1)表示工作表“Sheet2”里的第一个插入的图片,即“图片1”
Set rng = Cells(1, 2)
With rng
ML = .Left
MT = .Top
MW = .Width
MH = .Height
.Select
ActiveSheet.Paste
End With
End If
With Selection.ShapeRange
.LockAspectRatio = msoFalse '取消锁定纵横选项
.Left = ML
.Top = MT
.Width = MW
.Height = MH
End With
If Cells(2, 1) = "博洛尼亚" Then '要继续增加,就从这里复制
Sheets(2).Shapes(2).Copy
Set rng = Cells(2, 2)
With rng
ML = .Left
MT = .Top
MW = .Width
MH = .Height
.Select
ActiveSheet.Paste
End With
End If
With Selection.ShapeRange
.LockAspectRatio = msoFalse '取消锁定纵横选项
.Left = ML
.Top = MT
.Width = MW
.Height = MH
End With '到这里结束,里面的图片名和行号、列号自己改就是了。
End Sub

回答(2):

如果A1的输入内容只有1 和0,那下面的代码可以实现。我模拟的表里只有1张图,所以直接用shapes(1)指向了这张图,如果你有多张图,需要先弄清是哪张图。

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("a1") = 0 Then

    Shapes(1).Visible = msoFalse

    Else:

    If Range("a1") = 1 Then

        Shapes(1).Visible = msoTrue

    End If 

End If

End Sub