如何在我的代码中实现循环并更有效地处理错误

时间:2019-01-14 02:24:23

标签: excel vba loops

我正在创建一个报告,并已自动执行了抓取图像并将其放进去的过程。它正在工作,但是比需要的时间更长。我希望有人可以通过实现循环来简化代码。

我尝试了几种方法,但是当涉及到放置图像的区域时,它似乎总是默认为我设置的初始变量。

Sub AutoFillInImages()
'DS#=图像文件名
'DS#_1 = F:\ Merchandising \ Style的编号\ DS#\ DS#PIC \
下的文件夹名称 'DS#_2 = DS#.2下的子文件夹或官方DS#文件夹

将Pic视作对象
形状变暗
调光范围
设置rng = Range(“ A14”)

DS1 =朗格和“ A.jpg”
DS1_1 =左(DS1,6)&“ 00-”&中(DS1,4,3)&“ 99”
DS1_2 =左(DS1,8)

出现错误时转到DS2
设置shp = ActiveSheet.Shapes.AddPicture(Filename:=“ F:\ Merchandising \ Style's Numbers \ DS#\ DS#PIC \” _
    &DS1_1&“ \”&DS1_2&“ \” _
    &DS1,LinkToFile:= msoFalse,_
    SaveWithDocument:= msoCTrue,左:= 340,上:= 46,宽度:=-1,高度:=-1)
有shp
    .Top = rng.Offset(-9,0).Top
    .Left = rng.Offset(-2,0).Left
    .LockAspectRatio = msoTrue
    高度= 190
    .IncrementTop 5
    .IncrementLeft 40
结尾为

DS2:
设置rng = Range(“ A27”)

DS1 =朗格和“ A.jpg”
DS1_1 =左(DS1,6)&“ 00-”&中(DS1,4,3)&“ 99”
DS1_2 =左(DS1,8)

出现错误时转到DS3
设置shp = ActiveSheet.Shapes.AddPicture(Filename:=“ F:\ Merchandising \ Style's Numbers \ DS#\ DS#PIC \” _
    &DS1_1&“ \”&DS1_2&“ \” _
    &DS1,LinkToFile:= msoFalse,_
    SaveWithDocument:= msoCTrue,左:= 340,上:= 46,宽度:=-1,高度:=-1)
有shp
    .Top = rng.Offset(-9,0).Top
    .Left = rng.Offset(-2,0).Left
    .LockAspectRatio = msoTrue
    高度= 190
    .IncrementTop 5
    .IncrementLeft 40
结尾为

DS3:
设置rng = Range(“ A40”)

DS1 =朗格和“ A.jpg”
DS1_1 =左(DS1,6)&“ 00-”&中(DS1,4,3)&“ 99”
DS1_2 =左(DS1,8)

Set shp = ActiveSheet.Shapes.AddPicture(Filename:=“ F:\ Merchandising \ Style's Numbers \ DS#\ DS#PIC \” _
    &DS1_1&“ \”&DS1_2&“ \” _
    &DS1,LinkToFile:= msoFalse,_
    SaveWithDocument:= msoCTrue,左:= 340,上:= 46,宽度:=-1,高度:=-1)
有shp
    .Top = rng.Offset(-9,0).Top
    .Left = rng.Offset(-2,0).Left
    .LockAspectRatio = msoTrue
    高度= 190
    .IncrementTop 5
    .IncrementLeft 40
结尾为

结束子

上面的代码有效,它比我所需要的更长。感谢您抽出宝贵的时间查看此内容!

1 个答案:

答案 0 :(得分:0)

创建一个可以使用其他参数(Rng)重复调用的子或函数。避免使用GoTo。使用 On Error Resume Next 代替,然后使用 If Err.Number = 0 Then 创建一个括号,用于代码的下一部分,以避免在出错时运行它。请注意,更新的错误恢复下一个会重置 Err 对象。