You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:01:30