Excel精英培训网

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

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

  [复制链接]
发表于 2011-7-14 13:13 | 显示全部楼层
回复 opelwang 的帖子

试试这种效果 test.rar (398.71 KB, 下载次数: 204)

评分

参与人数 1 +1 收起 理由
opelwang + 1 不错的方法~~

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-7-14 22:04 | 显示全部楼层
感谢:飞翔 版主指点,不错的方法,学习了。
回复

使用道具 举报

 楼主| 发表于 2011-7-14 22:59 | 显示全部楼层
HYY514 发表于 2011-7-14 13:13
回复 opelwang 的帖子

试试这种效果


版主,测试了下代码,效果不错,只是没加容错处理。如果图片不存在或找不到对应的图片,报错。

能否加段容错的代码呀,找不到时,在批注里显示:找不到指定的图片

谢谢!
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count <> 1 Then Exit Sub
  3. Dim sPh As String
  4. Dim oCm As Comment

  5.     Set oCm = Target.Comment
  6.     sPh = ThisWorkbook.Path & "\pic" & Target.Text & ".jpg"
  7.    
  8.     If Not oCm Is Nothing Then
  9.         If Len(oCm.Text) = 0 Or Len(Dir(sPh)) Then oCm.Delete
  10.     End If
  11.    
  12.     If Len(Dir(sPh)) Then
  13.             With Target.AddComment
  14.                 .Visible = True
  15.                 .Text Text:=""
  16.                 .Shape.Select True
  17.             End With
  18.             With Selection.ShapeRange
  19.                 .Fill.UserPicture ThisWorkbook.Path & "\pic" & Target.Text & ".jpg"
  20.                 .ScaleWidth 1.7, msoFalse, msoScaleFromTopLeft
  21.                 .ScaleHeight 4, msoFalse, msoScaleFromTopLeft
  22.             End With
  23.             Application.DisplayCommentIndicator = xlCommentIndicatorOnly
  24.     End If

  25. End Sub
复制代码


回复

使用道具 举报

 楼主| 发表于 2011-7-15 01:02 | 显示全部楼层
Zipall 发表于 2011-7-13 22:38
回复 opelwang 的帖子

Zipall大师,可否加段容错的代码呀?
比如:单击单元格时,找不到对应的图片,或 对应的图片被占用?
如何处理?

回复

使用道具 举报

发表于 2011-7-15 09:58 | 显示全部楼层
回复 opelwang 的帖子

我不是什么大师,只是个学习excel的爱好者.

可以在load之前用dir判断文件是否存在.
占用是什么意思?
回复

使用道具 举报

发表于 2011-7-15 10:22 | 显示全部楼层
学习了。。。
回复

使用道具 举报

发表于 2011-7-15 11:15 | 显示全部楼层
opelwang 发表于 2011-7-14 22:59
版主,测试了下代码,效果不错,只是没加容错处理。如果图片不存在或找不到对应的图片,报错。

能否 ...

图片名字不存在时,就直接不显示,这样不好吗?你一个这么大的工作表中除了这个还需要有其他内容吧.
如果真要这样就更简单了
Private Sub Worksheet_Change(ByVal Target As Range)
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 4, msoFalse, msoScaleFromTopLeft
        End With
        
    Else
        .Text Text:="找不到指定的图片"
    End If
End With
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
End Sub

评分

参与人数 1 +1 收起 理由
opelwang + 1 感謝指點。

查看全部评分

回复

使用道具 举报

发表于 2011-7-15 11:38 | 显示全部楼层
如果需要只在第一列输入才产生效果,就在代码开头插入一句
If Target.Column <> 1 Then Exit Sub
回复

使用道具 举报

 楼主| 发表于 2011-7-15 13:20 | 显示全部楼层
Zipall 发表于 2011-7-15 09:58
回复 opelwang 的帖子

我不是什么大师,只是个学习excel的爱好者.


占用的意思是:圖片被打開,或被其它的代碼調用。

  
回复

使用道具 举报

发表于 2011-7-15 13:21 | 显示全部楼层
opelwang 发表于 2011-7-15 13:20
占用的意思是:圖片被打開,或被其它的代碼調用。

  

被其它程序打开时,无法插入吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 19:40 , Processed in 0.314106 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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