Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: opelwang

[已解决]点击单元格时显示指定的图片

  [复制链接]
发表于 2011-8-7 00:53 | 显示全部楼层
本帖最后由 joyark 于 2011-8-30 02:51 编辑

被其它程序打开时,无法插入吗?
1.第一種方法
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Image1
        Select Case ActiveCell.Address(False, False)
        Case "C4"
            P = "DC.JPG"
        Case "E4"
            P = "FG.JPG"
        Case "K5"
            P = "PR.JPG"
        Case Else
            .Visible = False
            Exit Sub
        End Select
        .Picture = LoadPicture(ThisWorkbook.Path & "\pic\" & P)
        .Visible = True
    End With
    With ActiveCell
        Image1.Top = .Top - Image1.Height / 2
        Image1.Left = .Left + .Width
    End With
End Sub

2.第二種方法

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 1 Then Exit Sub    '如果需要只在第一列输入才产生效果 , 就在代码开头插入一句
'If Target.Count <> 1 Then Exit Sub'全部输入才产生效果 , 就在代码开头插入一句
    Dim sPh As String
    On Error Resume Next
    sPh = ThisWorkbook.Path & "\pic\" & Target.Text & ".jpg"
    Target.Comment.Delete
    With Target.AddComment
        .Visible = True
        .Text Text:=""
        .Shape.Select True
        If Len(Dir(sPh)) Then
            With Selection.ShapeRange
                .Fill.UserPicture ThisWorkbook.Path & "\pic\" & Target.Text & ".jpg"
                .ScaleWidth 1.7, msoFalse, msoScaleFromTopLeft
                .ScaleHeight 2, msoFalse, msoScaleFromTopLeft
            End With
        Else
            .Text Text:="找不到指定的图片"
        End If
    End With
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
End Sub


3.第三種方法
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 1 Then Exit Sub
    Dim sPh As String
    Dim oCm As Comment
    Set oCm = Target.Comment
    sPh = ThisWorkbook.Path & "\pic\" & Target.Text & ".jpg"
    If Not oCm Is Nothing Then
        If Len(oCm.Text) = 0 Or Len(Dir(sPh)) Then oCm.Delete
    End If
    If Len(Dir(sPh)) Then
        With Target.AddComment
            .Visible = True
            .Text Text:=""
            .Shape.Select True
        End With
        With Selection.ShapeRange
            .Fill.UserPicture ThisWorkbook.Path & "\pic\" & Target.Text & ".jpg"
            .ScaleWidth 1.7, msoFalse, msoScaleFromTopLeft
            .ScaleHeight 4, msoFalse, msoScaleFromTopLeft
        End With
        Application.DisplayCommentIndicator = xlCommentIndicatorOnly
    End If
End Sub


excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2011-8-30 14:32 | 显示全部楼层
回复 Zipall 的帖子

Zipall 您好
我依葫芦画瓢,新建了一个 my test.xls,但同样的代码在test.xls(是你原始文件)就可以使用,但在my test.xls却不能工作,请帮忙看看。

test.zip

478.4 KB, 下载次数: 60

回复

使用道具 举报

发表于 2011-8-30 19:05 | 显示全部楼层
回复 wwy_168 的帖子

打开控件工具箱,插入一个图像控件即可.
你把test.xls切换到设计模式,就能看到那个控件及它的属性设置.
回复

使用道具 举报

发表于 2011-8-30 21:52 | 显示全部楼层
已经搞定,非常感谢,我正在做一个PCB库文件与图片相对应,增加了一些异常的事件。文件在公司,待做得差不多,再发出来分享。
回复

使用道具 举报

发表于 2011-8-30 22:52 | 显示全部楼层
回复 wwy_168 的帖子

工作表插以下
圖片會自動
=EMBED("Forms.Image.1","")
回复

使用道具 举报

发表于 2011-8-31 20:02 | 显示全部楼层
回复 joyark 的帖子

谢谢,已经搞定。很多人只用到excel极少的功能,VBA是否是就是增加excel的利器!
回复

使用道具 举报

发表于 2011-8-31 21:09 | 显示全部楼层
回复 joyark 的帖子

谢谢你加我为好友,可能是我的权限不足,无法同意加你为好友
回复

使用道具 举报

发表于 2011-9-16 07:48 | 显示全部楼层
学习下
回复

使用道具 举报

发表于 2012-4-28 20:16 | 显示全部楼层
学习一下啊,一步一步来。
回复

使用道具 举报

发表于 2012-4-28 20:43 | 显示全部楼层
收获源自积累,坚持终能成长!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 18:17 , Processed in 0.371160 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表