VBA - 查找包含“”的单元格,然后在QueryTable加载后填充单元格

时间:2017-07-25 17:06:51

标签: excel vba excel-vba

所以我遇到了一个问题,我创建了一个循环来查找工作表中“标准偏差”的位置,并将数据3个单元格拉到右侧。问题是这应该在加载查询表之后提取数据。我的代码不起作用,因为它在Querytable加载之前运行。

Sub StdB5()
Dim URL As String
Dim ws As Worksheet
Dim qt As QueryTable
Dim mep As Worksheet
Dim Symbol As String
Set mep = Worksheets("Managed Equity Portfolios")
Set ws = Worksheets("Hidden Sheet 3")

Sheets("Hidden Sheet 3").Cells.ClearContents
Sheets("Hidden Sheet 3").Visible = True
Symbol = Symbol & mep.Range("B5").Value
 URL = "https://www.google.com/finance?q=MUTF:" + Symbol

Set qt = ws.QueryTables.Add( _
   Connection:="URL;" & URL, _
   Destination:=ws.Range("A1"))

qt.Refresh

Dim stdRange As Range
Dim cel As Range
Dim stdcell As Range 'std on MEP
Set stdcell = mep.Cells.Range("H5")   'std on MEP
Set stdRange = ws.Range("A45:A50")
For Each cel In stdRange
    If cel.Value = ("Standard deviation") Then
       stdcell.Value = cel.Offset(0, 3).Value
    End If
Next cel

有没有办法让它等到查询表在运行之前加载?在表加载后不必再次物理运行宏?

编辑:我需要这样做的原因是因为有时在QT运行之后,标准偏差将在例如单元格A45而不是A47中。这使得它不能只是让我想要填充的单元格='Sheet2'A45' 编辑2:添加完整代码

1 个答案:

答案 0 :(得分:0)

我理解代码会等待一段时间然后运行如果它是正确的你可以使用Application.Wait(Now + TimeValue(" 0:00:05"))。这将等待5秒钟,然后执行下一行。