在EXCEL中的图片,能否按条件显示?
在EXCEL中插入了一张图片,能否要求这张图片在A1单元格等于1时就显示,等于0时就不显示?这个用宏怎么写?...
在EXCEL中插入了一张图片,能否要求这张图片在A1单元格等于1时就显示,等于0时就不显示?
这个用宏怎么写? 展开
这个用宏怎么写? 展开
4个回答
展开全部
在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
注:引号里面的为条件。
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
展开全部
用宏写是没问题,只是楼主要决定何时触发,比如,设定在工作簿打开和A1 change事件发生时触发运行:,请下载参考附件
新建模块,插入代码:
Sub ProcessPic()
ThisWorkbook.Sheets(1).Shapes(1).Visible = ThisWorkbook.Sheets(1).Cells(1, 1)
End Sub
工作簿打开事件
Private Sub Workbook_Open()
ProcessPic
End Sub
Sheet1 Change事件
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then ProcessPic
End Sub
追问
A1单元格的数字可变。我要求显示图片时,只要在A1输入1,不需要显示时,输入0.
追答
你有没有试过我上传的附件?试过就知道完全满足你的想法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Sub tesxt()
If [a1] = 1 Then
Sheet1.Shapes("图片名").Visible = True
Else
Sheet1.Shapes("图片名").Visible = False
End If
End Sub
If [a1] = 1 Then
Sheet1.Shapes("图片名").Visible = True
Else
Sheet1.Shapes("图片名").Visible = False
End If
End Sub
追问
按此法没有达到目的!
追答
你改一下把这个代码改为selection时间例如:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [a1] = 1 Then
Sheet1.Shapes("picture 1").Visible = True
Else
Sheet1.Shapes("picture 1").Visible = False
End If
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询