基于VBA实现发票中按单元格D10值控制图片显示的需求问询
根据单元格值自动显示/隐藏图片的VBA解决方案
需求说明
单元格D10的值为“Paid”时显示指定图片,为“Not Paid”时隐藏图片。
自动触发版代码(推荐)
将代码放在对应工作表的代码模块中,当D10单元格内容变化时自动执行逻辑:
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) ' 仅监听D10单元格的内容变化 If Not Intersect(Target, Me.Range("D10")) Is Nothing Then Dim sImgName As String sImgName = "C:\Users\dhamm\Desktop\paid.jpg" ' 替换为你的图片实际路径 With Me.sPaidShp ' 忽略大小写匹配,兼容不同输入格式 Select Case UCase(Me.Range("D10").Value) Case "PAID" .Picture = LoadPicture(sImgName) .Visible = True ' 确保图片控件可见 Case "NOT PAID" .Picture = LoadPicture(vbNullString) ' 清空图片 .Visible = False ' 隐藏控件(可选,若需保留控件位置可移除此行) Case Else ' 处理D10为空或其他值的情况 .Picture = LoadPicture(vbNullString) .Visible = False End Select End With End If End Sub
按钮触发版代码(保留手动操作)
如果需要通过按钮手动触发检查逻辑,修改原按钮代码如下:
Option Explicit Private Sub CommandButton1_Click() Dim sImgName As String sImgName = "C:\Users\dhamm\Desktop\paid.jpg" With Me.sPaidShp Select Case UCase(Me.Range("D10").Value) Case "PAID" .Picture = LoadPicture(sImgName) .Visible = True Case "NOT PAID" .Picture = LoadPicture(vbNullString) .Visible = False Case Else .Picture = LoadPicture(vbNullString) .Visible = False End Select End With End Sub
关键说明
- 确保工作表中存在名为
sPaidShp的图片控件(形状对象) UCase函数用于兼容大小写不同的输入(如“paid”“Paid”都能触发显示逻辑)- 若仅需清空图片而非隐藏控件,可移除
.Visible = False行
内容的提问来源于stack exchange,提问作者David Hammon
相关产品推荐
相关产品推荐

