excel vba请问为什么每次第一次on error goto 都可以到ma,但以后都不可以了? 5

xpath1="D:\lala\"xpath2="D:\文件\88\"Setfso=CreateObject("scripting.filesystemobject")S... xpath1 = "D:\lala\"
xpath2 = "D:\文件\88\"
Set fso = CreateObject("scripting.filesystemobject")
Set f = fso.getfolder(xpath2)
Set fc = f.Files
myfile = Dir(xpath1 & "*.jpg")

Do While myfile <> ""
many = fc.Count
If Mid(myfile, 1, InStr(myfile, "_") - 1) ="111" Then
On Error GoTo ma
fso.movefile xpath1 & myfile, xpath2
GoTo ba
ma: Err.Clear
myfile1 = Left(myfile, Len(myfile) - 4) & many & ".jpg"
Name (xpath1 & myfile) As (xpath1 & myfile1)
fso.movefile xpath1 & myfile1, xpath2
ba:End If
myfile = Dir
If myfile = "" Then
Exit Do
End If
Loop
这是一个把文件从lala移到88中的操作,但是如果发现该文件与88的某文件重名,就将lala中的这个文件更名,然后在移到88中,可是运行后发现,第一次可以,以后就报错:文件未找到。
我想不通,为什么
On Error GoTo ma
fso.movefile xpath1 & myfile, xpath2
在第一次出错时,都跳至ma,而第二次就不跳了?(注:lala中与88重名的文件不止一个)
展开
 我来答
zzllrr小乐
高粉答主

推荐于2016-05-22 · 小乐图客,小乐数学,小乐阅读等软件作者
zzllrr小乐
采纳数:20147 获赞数:78778

向TA提问 私信TA
展开全部

这是因为第一次出错后

On Error GoTo ma

将执行ma代码块。


但是ma代码块,执行后,并没有改变myfile变量的值,

而且ma代码块,并没有交待On Error的处理规则,

因此会直接报错,程序直接暂停挂起。


解决办法:

  • 在ma代码块,交待On Error Resume Next 或者 On Error GoTo 其它代码块

  • 在ma代码块,报错后继续处理myfile变量的赋值,即GoTo ba

Ynzsvt
2014-04-24 · TA获得超过6662个赞
知道大有可为答主
回答量:1.5万
采纳率:40%
帮助的人:2641万
展开全部

因为你没有使用Resume [Next]返回。

Sub ss()
'……你程序的其他部分
 xpath1 = "D:\lala\"
 xpath2 = "D:\文件\88\"
 Set fso = CreateObject("scripting.filesystemobject")
 Set f = fso.getfolder(xpath2)
 Set fc = f.Files
 myfile = Dir(xpath1 & "*.jpg")
 Do While myfile <> ""
  many = fc.Count
  If Mid(myfile, 1, InStr(myfile, "_") - 1) = "111" Then
   On Error GoTo ma
   fso.movefile xpath1 & myfile, xpath2
   On Error GoTo 0
  End If
  myfile = Dir
 
 Loop
 '……你程序的其他部分
 Exit Sub
 

ma:  Err.Clear
 myfile1 = Left(myfile, Len(myfile) - 4) & many & ".jpg"
 Name (xpath1 & myfile) As (xpath1 & myfile1)
 fso.movefile xpath1 & myfile1, xpath2
 Resume Next
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式