Excel精英培训网

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

[已解决]vba 循环插入图片 异常

[复制链接]
发表于 2013-2-19 17:59 | 显示全部楼层 |阅读模式
  1. Sub insertPic()
  2. '
  3. '删除已有图片
  4.     Dim S1 As Shape
  5.     'Dim RG As Range
  6.     For Each S1 In ActiveSheet.Shapes
  7.       If S1.Type <> 8 Then
  8.         S1.Delete
  9.       End If
  10.     Next S1
  11. '插入图片
  12.     imgWidth = InputBox("请输入一个 0~1 之间的小数(不包括 0 和 1)", "设置插入图片列的宽度", 0)
  13.     imgHeight = InputBox("请输入一个 0~1 之间的小数(不包括 0 和 1)", "设置插入图片行的高度", 0)
  14.     hColumn = InputBox("请输入插入的列数", "设置插入图片行的高度", 0)
  15.     If IsNumeric(hColumn) = True And imgWidth < 1 And imgWidth > 0 And imgHeight < 1 And imgHeight > 0 Then
  16.         Dim i As Integer
  17.         Dim FilPath As String
  18.         Dim rng As Range
  19.         Dim S As String
  20.         With Sheet1
  21.             For i = 2 To .Range("a65536").End(xlUp).Row
  22.                 FilPath = ThisWorkbook.Path & "\photos" & .Cells(i, 1).Text & ".jpg"
  23.                 'FilPath = "D:\vba\vbatest\photos" & .Cells(i, 1).Text & ".jpg"
  24.                 If Dir(FilPath) <> "" Then
  25.                     .Pictures.Insert(FilPath).Select
  26.                     MsgBox hColumn
  27.                     Set rng = .Cells(i, hColumn)
  28.                     With Selection
  29.                         ActiveSheet.Rows(i).RowHeight = Selection.ShapeRange.Height * imgHeight '调整行高适合图片大小  Selection.ShapeRange.Height
  30.                         ActiveSheet.Columns(Column).ColumnWidth = Selection.ShapeRange.Width * imgWidth * 0.2 '粗略调整列宽适合图片大小 Selection.ShapeRange.Width * lWidth
  31.                         .Top = rng.Top + 1
  32.                         .Left = rng.Left + 2
  33.                         .Width = rng.Width
  34.                         .Height = rng.Height
  35.                     End With
  36.                 Else
  37.                     S = S & Chr(10) & .Cells(i, 1).Text
  38.                 End If
  39.             Next
  40.             .Cells(hColumn, i).Select
  41.         End With
  42.         If S <> "" Then
  43.             MsgBox S & Chr(10) & "没有照片"
  44.         End If
  45.     Else
  46.         MsgBox "输入有误"
  47.     End If
  48. End Sub
复制代码
我这里的写法哪里不对了,Cells(i, hColumn) 这句话报错,本人初搞vba  把 hColumn 换成具体的数字就不报错了

图片就是我要的效果 但是总会多弹出一次 “没有照片” 谁给解释一下


最佳答案
2013-2-19 18:30
先插图形,再设置图形的背景填充,统一大小比较美观。
QQ截图20130219175733.png
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-2-19 18:11 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-2-19 18:20 | 显示全部楼层
JLxiangwei 发表于 2013-2-19 18:11
你把单元格大小调整一下就行了

我不想通过手工调整,想直接根据图片大小改变单元格大小
回复

使用道具 举报

发表于 2013-2-19 18:30 | 显示全部楼层    本楼为最佳答案   
先插图形,再设置图形的背景填充,统一大小比较美观。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 09:58 , Processed in 0.458950 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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