VBA将变量传递给重复子

时间:2016-07-06 16:59:55

标签: vba excel-vba excel

我有两个潜艇。第一个子(GetKeyWord)向用户询问关键字并将它们存储在字符串数组中。下一个子(AlertFinder)接收特定的字符串数组并在网页中搜索它。但是,我希望AlertFinder每隔x分钟运行一次,但是我不想让用户在每次AlertFinder运行时都被问到他/她正在寻找什么关键字(只想在开头询问用户一次并且有字符串数组在此之后保持不变)。这就是为什么我将GetKeyWord设为一个单独的子,但现在我无法运行AlertFinder,因为它要求从GetKeyWord运行字符串数组。

以下是代码:

Sub GetKeyWords()


Dim numKey As Integer
Dim strTemp() As Variant

'Input Keywords

numKey = InputBox("How many keywords would you like to search for? (Integer)", "Integer Value Please")




For k = 1 To numKey
    ReDim Preserve strTemp(numKey - 1)
    strTemp(k - 1) = InputBox("Please enter keyword" & k)


Next


'Execute Alert Finder
Call AlertFinder(strTemp)
End Sub


Sub AlertFinder(strTemp() As Variant)


'Set Variables
Dim boolFound As Boolean
Dim txt As String
Dim strOutput As String
Dim tbl As HTMLTable, tables As IHTMLElementCollection
Dim tr As HTMLTableRow, r As Integer, i As Integer
Dim tRows As IHTMLElementCollection
Dim ie As InternetExplorer
Dim strCurrent As Variant

~bunch of code~

     Set ieDoc = ie.Document

    'Loop to refresh webpage every 25 minutes
    Do While True

        'Pause the script for x minutes
        Application.Wait (Now + TimeValue("00:05:00"))

        'AFter time is up, reload page and run Alert Finder Again
        ieDoc.Location.Reload (True)
        AlertFinder (strTemp)

        If Err <> 0 Then

            Wscript.Quit
        End If
    Loop

    Set ie = Nothing
  End Sub

当我尝试在AlertFinder本身中调用AlertFinder(strTemp)时出现问题,但是strTemp来自GetKeyWord,我希望它保持不变并且不必每5分钟运行一次GetKeyWord。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

感谢那些评论的人。我最后做的是将strTemp声明为一个Public变量,因此它可以在GetKeyword中给出一个值,并传递给AlertFinder,而AlertFinder也可以自己调用(然后删除在GetKeyword子中声明的所有strTemp()实例)。工作得很好。

Public strTemp()as Variant

在所有子程序完成之前。希望这可以帮助其他人解决同样的问题。