提问人:Jeff 提问时间:11/10/2022 最后编辑:Jeff 更新时间:11/10/2022 访问量:34
在宏中传递的变量在调用子运行时会发生变化
Passed Variables in macro change when called sub is run
问:
我有一个master_macro调用其他 2 个宏:(sub)calc 和 (sub)transfer。calc 宏不需要传递给它的任何变量,但另一个变量需要,当master_macro调用传输宏时,有几个传递的变量正在被修改,即使它们是使用 byval 方法传递的。这些声明嵌套在 for 循环中,因为它们是工作簿名称。
dpath = ws.cells(2,9).value
fname = ws.cells(i,10).value
set wkbk = workbooks.open(dpath & fname & ".xlsx")
call calc
tempname = ws.cells(4,9).value
fpath = ws.cells(3,9).value
temppath = ws.cells(5,9).value
set wkbk2 = workbooks.open(temppath & tempname) 'the tempname should have the extension
call transfer(fname, dpath, fpath, tempname, wkbk, wkbk2)
以下是我如何启动传输子例程。
sub transfer(byval fname, byval dpath, byval fpath, byval tempname, byval wkbk, byval wkbk2)
我在调用点有断点来逐步执行它,看看变量是什么。不知何故,fpath 和 tempname varialbes 被切换了。我的印象是,如果使用 byval,它们就无法更改。我注意到这个错误,一旦传输运行并在循环中的“下一个 i”中断,它就没有将临时名称保存在 fpath 文件夹中。
答: 暂无答案
下一个:按值复制数组
评论
Call transfer(...)
fpath
tempname
fname
master_macro
fname
transfer