我有一个单词vba使用excel并有几个调用的过程:
private sub testsub1 'some process call testsub2 (a, b, c,...) end sub private sub testsub2 (byref a as long, byref b as long, byref c as long,...) 'some process call testsub3 (a, b, c,...) end sub private sub testsub3 (byref a as long, byref b as long, byref c as long,...) 'some process 'calls testub2 if a is less than some value. if a < somevalue then call testsub2 (a, b, c,...) end if documents("doc1").close 'closes a document wb.close 'closes a workbook exc.quit 'closes excel set wb = nothing set exc = nothing msgbox "Analysis complete" end sub问题:在从testsub3调用testsub2之后,我无法在testsub3中结束sub。 在MsgBox之后,它跳转到testsub3中的一些代码(文档(“doc1”)。close)---错误:错误的文件名------>文档已经关闭。
但是如果没有调用testsub2我就能结束。
想法?
谢谢
注意:我不使用循环,因为代码太长(错误:过程太大)。 因此,多个程序/子。
I have a word vba that uses excel and has several procedures that call:
private sub testsub1 'some process call testsub2 (a, b, c,...) end sub private sub testsub2 (byref a as long, byref b as long, byref c as long,...) 'some process call testsub3 (a, b, c,...) end sub private sub testsub3 (byref a as long, byref b as long, byref c as long,...) 'some process 'calls testub2 if a is less than some value. if a < somevalue then call testsub2 (a, b, c,...) end if documents("doc1").close 'closes a document wb.close 'closes a workbook exc.quit 'closes excel set wb = nothing set exc = nothing msgbox "Analysis complete" end subQuestion: I cannot end sub in testsub3 after calling testsub2 from testsub3. After MsgBox, it jumps to some code in testsub3 (documents("doc1").close)---error: bad file name ------>document has already been closed.
But I am able to end if it did not call testsub2.
Ideas?
Thanks
Note: I don't use loop because the code is too long (error: procedure is too large). Hence the multiple procedures/sub.
最满意答案
也许你可以尝试类似的东西:
Private analysisComplete As Boolean Private Sub testsub1() 'some process analysisComplete = False Call testsub2(a, b, c,...) End Sub Private Sub testsub2(ByRef a As Long, ByRef b As Long, ByRef c As Long,...) 'some process Call testsub3(a, b, c) End Sub Private Sub testsub3(ByRef a As Long, ByRef b As Long, ByRef c As Long,...) 'some process 'calls testub2 if a is less than some value. If a < someValue Then Call testsub2(a, b, c) End If If Not analysisComplete Then Documents("doc1").Close 'closes a document wb.Close 'closes a workbook exc.Quit 'closes excel Set wb = Nothing Set exc = Nothing MsgBox "Analysis complete" analysisComplete = True End If End Sub所以它只执行一次testsub3的最后一部分。
Tried this and worked, no errors
private sub testsub3 (byref a as long, byref b as long, byref c as long,...) 'some process 'calls testub2 if a is less than some value. if a < somevalue then call testsub2 (a, b, c,...) else documents("doc1").close 'closes a document wb.close 'closes a workbook exc.quit 'closes excel set wb = nothing set exc = nothing msgbox "Analysis complete" end if end sub更多推荐
发布评论