2015-06-12 66 views
1

好吧,我有3个模块。我的第一个模块是“主”,这是我需要调用其他模块的模块。我的意思是,当我跑主,我想它call/run其他2模块。目前,当我按F5时,它不会这样做。我该怎么做呢?如何在VBA excel的另一个模块中运行/调用模块?

我当前的代码如下所示:

Sub main_TRY() 
    Call Module2 
    Call Module3 
End Sub 

所有帮助是极大的赞赏。谢谢。

+0

Sub或'Function'定义是否叫'Module2'和'Module3'?你想'调用TheActualSubroutineName',而不是包含代码的模块。例如,您希望“调用main_TRY”,而不是“调用模块1” –

+0

。好吧,我已经解决了。谢谢@Dan Wagner –

回答

1

答:

Sub main_TRY1() 
    Call Module2.Formating 
    Call Module3.Data 
End Sub 
+2

只有**格式化**和**数据**被声明为* Private Sub *时才有必要。 A * Public Sub *是默认的,所以如果它们被声明为'Public Sub Formating(...)'或'Sub Formating(...)',那么'Call Formating(...)'或简单地'Formating(。 ..)'是适当的。除非你将参数投入到子中,否则不需要'(...)'。 – Jeeped

+0

谢谢@Jeeped。从我的函数定义中删除_Private_后,我可以从另一个模块中调用它们。而且我不需要在调用我的(现在公开的)函数时包含模块名称。 –

0

我有我的VBA的脚本之一simular结构调查,它是这样的。

Private Sub CommandButton1_Click() 
Call GetData1 
End Sub 

,在我的模块2,它看起来像这样

Sub GetData1() 
'my code 
Dim IE As Object 
Dim dd As Variant 

Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}") 

IE.Visible = False 

IE.Navigate "https://www.avanza.se/aktier/om-aktien.html/5247/investor-b" 

Application.StatusBar = "Loading, Please wait..." 

IEWait IE 

Application.StatusBar = "Searching for value. Please wait..." 
dd = IE.Document.getElementsByClassName("lastPrice SText bold")(0).innerText 
Range("G7").Value = dd 
End Sub 

也许有点多,但我只是想让你知道我正在使用的代码的结构。

所以每次我点击BUTTOM“CommandButton1的” 上面这段代码将执行,但在你的情况下,每次调用该函数main_try(),你应该,如上面所指出的,呼吁该模块的功能,而不是模块本身。

希望它有帮助,最好的问候

相关问题