2013-11-22 143 views
1
調用Sub過程

我的代碼檢索一個HTML頁面爲對象,給予一定的參數:Excel的VBA:從功能

Public Sub MyPage(myparam) 
Dim oHtml As HTMLDocument 

Set oHtml = New HTMLDocument 

With CreateObject("WINHTTP.WinHTTPRequest.5.1") 
    .Open "GET", "http://www.example.com" & myparam, False 
    .send 
    oHtml.body.innerHTML = .responseText 
End With 

End Sub 

我定義將使用同一個對象的功能,因此,我想最大限度地減少連接數量。所以我想定義一個函數,如:

Function myFunction(myparam As String) 

Call MyPage(myparam) 

'code here 

End Function 

但是,這是行不通的。當我鍵入= myFunction到一個單元格時,我得到#VALUE!錯誤。

如果我只需要輸入函數內部的子過程的代碼,它的工作原理,是這樣的:

Function myFunction(myparam As String) 

Dim oHtml As HTMLDocument 

Set oHtml = New HTMLDocument 

With CreateObject("WINHTTP.WinHTTPRequest.5.1") 
    .Open "GET", "http://www.example.com" & myparam, False 
    .send 
    oHtml.body.innerHTML = .responseText 
End With 

    'code here 

End Function 

但是,正如上面提到的,這將需要不同的功能相同的連接和對象。

我該如何解決這個問題?由於

+0

這兩種方法使用相同數量的資源。我沒有看到差異。 – jacouh

+1

你有沒有把'oHtml'用作'公共變量'? –

+0

@KazJaw Bingo,就是這麼簡單! –

回答

1

我的評論轉換爲一個答案:

使用您oHtml variablePublic variable