这是因为第一次出错后
On Error GoTo ma
将执行ma代码块。
但是ma代码块,执行后,并没有改变myfile变量的值,
而且ma代码块,并没有交待On Error的处理规则,
因此会直接报错,程序直接暂停挂起。
解决办法:
在ma代码块,交待On Error Resume Next 或者 On Error GoTo 其它代码块
在ma代码块,报错后继续处理myfile变量的赋值,即GoTo ba
因为你没有使用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