EXCEL VBA编辑器运行结果和控件运行结果不一致

EXCEL VBA编辑器运行结果和控件运行结果不一致

今天用VBA Application.WorksheetFunction.VLookup编写了一段程序,在编辑器里面run结果没有任何问题。但是把sub assign给控件以后,控件的运行结果不同,找不出任何原因。

程序如下:

For a = 1 To 7
If ThisWorkbook.Sheets(1).Cells(a, 2).Value = 1 Then
Column_number = ThisWorkbook.Sheets(1).Cells(a, 3).Value
For i = Row_title + 1 To Range("B1048576").End(xlUp).Row
On Error Resume Next
target_name = ThisWorkbook.Sheets(1).Cells(i, 2).Value
Apply_Name = Application.WorksheetFunction.VLookup(target_name, Sheets(2).Range("A:Z"), Column_number, False)
ThisWorkbook.Sheets(1).Cells(i, a + 2) = Apply_Name
Apply_Name = ""
Next
End If


在编辑器里面点击运行,出来的vlookup结果完全正常,遇到无匹配值返回空,大概类似如下结果:

a 123 456
b
c 789 1011
d 1213 1415


但是我把sub assign给控件以后,显示出来的运行结果只有第一行有数据,C行之后的数值没有的,如下:
a 123 456
b
c
d
然后我就把c的目标值复制到a的下面,点击控件运行的结果,如下:
a 123 456
c 789 1011
b
d


所以经过我的反复尝试,就感觉当控件运行的时候,一旦vlookup运行到找不到匹配的目标值时,就直接跳出了里面的for循环,但是外面的for循环还是ok的,毕竟两列数据都能v到
反复更改了vba程序,都是编辑器运行没有任何问题,但是一旦通过控件运行就是如上面的结果,感觉已经不是程序写的问题了,不知道哪位可以指点迷津一下,谢谢!

先暂时注释掉On Error Resume Next
再添加Debug.Print或输出运行日志到外部文件
然后给控件运行,看出什么错或Print出啥信息。

谢谢解答,问题解决了,在程序最前面加上了ThisWorkbook.Sheets(1).Activate就控件运行没有问题了,虽然不知道为什么不加运行结果是这种没运行完整的状态