我正在一個小型的Excel項目中,我有一個用戶窗體。用戶表單具有一個組合框,其中包含從Excel工作表中的列(A)檢索到的公司名稱列表(此操作按預期工作)。Excel VBA Web查詢行爲問題
表單有一個文本框,根據從下拉框中的選擇返回列B中的股票行情(按預期工作)。
下一步就是分解的地方。股票代碼價值然後傳遞給連接到雅虎財務的網絡查詢,並從網站中檢索數據。
問題1: 網頁查詢在表單關閉之前不會返回數據。我希望它能夠「立即」返回值。
問題2: 每次運行查詢時,都會構建一個新的查詢表,即使我編寫了腳本以刪除查詢表。
Private Sub cb_Stock_Name_Change()
Set ws = Worksheets("Stock_Info")
With Me
.tb_ticker.Value = ws.cells(.cb_stock_name.ListIndex + 2, 2)
'.TextBox3.Value = Format(Sheet1.cells(.ComboBox1.ListIndex + 7, 9), "0%")
'.TextBox2.Value = Format(Sheet1.cells(.ComboBox1.ListIndex + 7, 10), "0%")
End With
Dim ticker As String
Dim conn As String
Set ws_query = Worksheets("Stock_Query")
ticker = tb_ticker.Value
conn = "URL;http://finance.yahoo.com/q?s=" & ticker
Dim qt As QueryTable
For Each qt In ws_query.QueryTables
qt.Delete
Next qt
Set qt = ws_query.QueryTables.Add _
(Connection:=conn, Destination:=Range("A1"))
With qt
'.Connection = conn
'.Destination = Range("A1")
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebSelectionType = xlSpecifiedTables
.WebTables = "2"
.Refresh
End With
With Me
.tb_previous_close.Value = ws_query.cells(1, 2)
End With
End Sub
問題: 什麼是錯我的代碼是:a)不返回,直到我的窗體關閉b)不刪除以前的QueryTable?
可能的解決問題1 - 假設形式是'Modal' ...你將不得不作出吧'ModeLess' ...' Userfomr1.Show VBModeless' –
潘卡嗨,你好,這裏是其他代碼: 打開工作簿 '私人小組Workbook_Open() UserForm1.Show 結束Sub' 形式初始化 '私人小組UserForm_Initialize() 昏暗rng_Stock_Name作爲範圍 Dim rn g_Ticker作爲範圍 集WS =工作表( 「Stock_Info」) 對於每個rng_Stock_Name在ws.Range( 「COMPANY_NAME」) Me.cb_stock_name.AddItem rng_Stock_Name.Value 接着rng_Stock_Name 結束Sub' 它是一種用戶窗體,而不是一個模塊。這有幫助嗎? – cquadrini
正如我所提到的...用'UserForm1.Show VBModeless'代替'UserForm1.Show'在'Workbook_Open()' –