首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >excel vba代码模块在运行期间未更新

excel vba代码模块在运行期间未更新
EN

Stack Overflow用户
提问于 2018-07-26 12:16:46
回答 2查看 304关注 0票数 1

我试图重用我的代码模块来运行循环(这会在不同的循环中改变一些数据);然而,我意识到从第二个循环开始,宏仍然在运行旧的脚本。你知道如何确保宏运行更新后的脚本(每次循环时我都会删除并重新创建脚本)吗?

实际的脚本很长,为了简化它,我只提取我引用的区域。我运行这个没有错误,只是从第二个循环开始,我检查了我重新创建的模块有更新的脚本,但宏仍然运行第一个循环脚本,这对我来说非常奇怪。

要写入模块的脚本存储在excel sheet3中,并在每次新循环开始后更改

代码语言:javascript
复制
Sub write_module()
For i = 1 To 2
Dim VBProj As VBIDE.VBProject
Dim VBComp, comp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule

Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("ZC553_MS")
Set CodeMod = VBComp.CodeModule

script_lr = Sheet3.Cells(Rows.Count, 8).End(xlUp).Row
LineNum = 2

With ActiveWorkbook.VBProject.VBComponents("ZC553_MS").CodeModule
' .DeleteLines 2, VBComp.CodeModule.CountOfLines - 2
 For j = 1 To script_lr
  .InsertLines LineNum, Sheet3.Cells(j, 8)
  LineNum = LineNum + 1
 Next j
End With

zc553_master

Next i

End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-26 14:16:09

尝试使用

代码语言:javascript
复制
Application.Run "zc553_master"

代替

代码语言:javascript
复制
zc553_master

用于调用动态编写的过程

这对我来说很好用:

代码语言:javascript
复制
Sub Tester()

    Dim i As Long, cm As CodeModule

    For i = 1 To 5

       Set cm = ActiveWorkbook.VBProject.VBComponents("ZC553_MS").CodeModule
       With cm

         .DeleteLines 2, 3

         .InsertLines 2, "Sub zc553_master()"
         .InsertLines 3, "    Debug.Print ""Version " & i & """"
         .InsertLines 4, "End Sub"

        End With
        DoEvents
        Debug.Print "calling", i

        Application.Run "zc553_master"
        'zc553_master

    Next i

End Sub

输出:

代码语言:javascript
复制
calling 1
Version 1
calling 2
Version 2
calling 3
Version 3
calling 4
Version 4
calling 5
Version 5

使用直接调用zc553_master的...but只是崩溃崩溃,或者似乎什么都没有运行。

但是,您尝试使用此方法解决的实际问题是什么?很难想象使用静态过程和传递参数不能模仿的东西。

票数 1
EN

Stack Overflow用户

发布于 2018-07-27 09:16:01

我需要清除代码模块的全部内容,包括Sub ()和End Sub,以便vba在第一次循环运行后识别代码模块中更新的代码。Tim提供了一个很好的示例和正确的实践,当您需要重用相同的代码模块名称,但在每次循环运行后更改内容时,所有功劳都归功于他:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51530915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档