У меня есть два субтитров. Первый sub (GetKeyWord) запрашивает у пользователя ключевые слова и сохраняет их в массиве строк. Следующий sub (AlertFinder) принимает конкретный массив строк и ищет его на веб-странице. Тем не менее, я хочу, чтобы AlertFinder запускал каждые x минут, но я не хочу, чтобы у пользователя спрашивали, какие ключевые слова он/она ищет каждый раз, когда запускается AlertFinder (нужно только спросить пользователя один раз в начале и иметь строку после этого остался постоянный массив). Вот почему я сделал GetKeyWord отдельным подразделением, но теперь у меня проблемы с запуском AlertFinder, поскольку он запускает строковый массив из GetKeyWord для запуска.VBA Передача переменной к повторяющейся Sub
Вот код:
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 (strTemp) внутри самой AlertFinder, но strTemp приходит от GetKeyWord, который я хочу оставаться постоянным и не должны работать GetKeyWord каждый 5 минут. Любая помощь будет оценена!
Трудно сказать, не видя «~ пучок кода ~», но вы, вероятно, должны извлечь цикл из «Sub AlertFinder» в свой собственный «Sub» вместо использования рекурсии. – Comintern
спасибо! не возражаете ли вы разработать? –
Петля поддерживает сценарий. Нет причин снова называть 'AlertFinder (strTemp)'. Случается, что каждые 5 минут вы создаете другую копию AlertFinder. Через 5 минут у вас есть 2 копии AlertFinder, через 10 минут - 4 копии, за 15 минут - 16 копий .... и т. Д. –