Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2696|回复: 8

[已解决]关于VBA80集第44集:vba图片与图形处理的问题???

[复制链接]
发表于 2013-12-8 13:05 | 显示全部楼层 |阅读模式
Sub 图片导入()
'删除已有图片
Dim S As Shape
Dim RG As Range
For Each S In ActiveSheet.Shapes
   If S.Type <> 8 Then
     S.Delete
   End If
Next S
'导入图片

  For Each RG In Range("b2:b5")
   ' Range("B2").Select
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, RG.Left, RG.Top, RG.Width, RG.Height).Select
    Selection.ShapeRange.Fill.UserPicture "E:\学习资料\兰色幻想VBA80集\VBA80集第44集:图片与图形处理\" & RG.Offset(0, -1) & ".jpg"
  Next RG
End Sub


1)为什么这个程序只可以运行一次。我运行第二次的时候就没有反映了.

2) 以上面的代码RG.Offset(0, -1),不是应该在A1:A5上插入图片吗,可是为什么在B2:B5上插入图片?

请高手详解!!!我是初学者!!




最佳答案
2013-12-8 13:25
加个对话框你能看到效果。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-8 13:10 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-12-8 13:19 | 显示全部楼层
hwc2ycy 发表于 2013-12-8 13:10
RG.Offset(0, -1) & ".jpg"这是文件名。

哦 知道了 谢谢!
可以解释一下第一个问题吗???
回复

使用道具 举报

 楼主| 发表于 2013-12-8 13:20 | 显示全部楼层
pluto720 发表于 2013-12-8 13:19
哦 知道了 谢谢!
可以解释一下第一个问题吗???

运行第二次不是也应该先删除图片 在添加吗?可是为什么第二次就不删除了?谢谢!
回复

使用道具 举报

 楼主| 发表于 2013-12-8 13:21 | 显示全部楼层
hwc2ycy 发表于 2013-12-8 13:10
RG.Offset(0, -1) & ".jpg"这是文件名。

运行第二次不是也应该先删除图片 在添加吗?可是为什么第二次就不删除了?谢谢!
回复

使用道具 举报

发表于 2013-12-8 13:23 | 显示全部楼层
  1. Sub 图片导入()
  2. '删除已有图片
  3. Dim S As Shape
  4. Dim RG As Range
  5. For Each S In ActiveSheet.Shapes
  6.    If S.Type <> 8 Then
  7.      S.Delete
  8.    End If
  9. Next S
  10. '导入图片
  11.    
  12.   For Each RG In Range("b2:b5")
  13.    ' Range("B2").Select
  14.     ActiveSheet.Shapes.AddShape(msoShapeRectangle, RG.Left, RG.Top, RG.Width, RG.Height).Select
  15.     Selection.ShapeRange.Fill.UserPicture ThisWorkbook.Path & "" & RG.Offset(0, -1) & ".jpg"
  16.   Next RG
  17. End Sub
复制代码
我这重复执行多次也没有问题啊。
回复

使用道具 举报

发表于 2013-12-8 13:24 | 显示全部楼层
你F8吧,因为执行完后,也是插入四个图片,跟原来效果没区别的。
  1. Sub 图片导入()
  2. '删除已有图片
  3.     Dim S As Shape
  4.     Dim RG As Range
  5.     For Each S In ActiveSheet.Shapes
  6.         If S.Type <> 8 Then
  7.             S.Delete
  8.         End If
  9.     Next S
  10.     MsgBox "原有图片删除完成,确定 后继续插入图片"

  11.     '导入图片

  12.     For Each RG In Range("b2:b5")
  13.         ' Range("B2").Select
  14.         ActiveSheet.Shapes.AddShape(msoShapeRectangle, RG.Left, RG.Top, RG.Width, RG.Height).Select
  15.         Selection.ShapeRange.Fill.UserPicture ThisWorkbook.Path & "" & RG.Offset(0, -1) & ".jpg"
  16.     Next RG
  17. End Sub
复制代码
回复

使用道具 举报

发表于 2013-12-8 13:25 | 显示全部楼层    本楼为最佳答案   
加个对话框你能看到效果。
回复

使用道具 举报

发表于 2013-12-8 13:27 | 显示全部楼层
pluto720 发表于 2013-12-8 13:21
运行第二次不是也应该先删除图片 在添加吗?可是为什么第二次就不删除了?谢谢!

代码是先删除再添加,只不过是中间没停顿,一气呵成,所以你看不到效果嘛。


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 01:37 , Processed in 0.496749 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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