2014-12-04 86 views
1

我试图创建一个无害的循环,而bloomberg刷新大量的数据。数据刷新后,我想打印(不是问题)。问题是,等待和其他VBA延迟命令实际上由于某种原因停止刷新数据。看起来像一个问题w彭博。循环,而Excel中的数据刷新

我在寻找一个简单的DO(什么?)循环,直到范围是所有数字(ISNUMBER)。我只需要程序继续运行,直到所有数据都更新,然后才能打印和继续。有一个简单的循环,直到范围是我可以使用的所有数字?由于

+0

彭博完成后是否有状态?也许你可以用DoEvents尝试do循环n次。改变或检查状态? – 2014-12-04 19:13:22

+0

没有地位或弹出当它完成,我只需要一个循环来检查所有的清爽细胞实际上已经返回的数据。我是新手,所以任何例子都会很棒。 – jpm351 2014-12-04 20:10:01

+0

你可以发布你用来刷新数据的代码吗? – tospig 2014-12-04 21:49:05

回答

1

有两种选择,我知道的,

一种是通过在范围内的每个细胞循环,检查它是否是数字,如果没有,继续含有Do循环:

Do 
AllNumbers = True 
For each c in Range(Range of what you want to be all numbers, ideally dynamic named range) 
    If Not IsNumeric(c.Value2) And Len(Trim(c.Value2)) Then 
     AllNumbers = False 
    End If 
Next c 
Loop Until AllNumbers = True 

的另一种是执行Excel公式内VBA像这样:

Do 
    ActiveWorkbook.Names.Add Name:="blahblahblah",RefersToR1C1:="=SUM(IF(NOT(ISNUMBER(Sheet1!R1C1:R9C2)),1,0))" 
Loop Until Application.Evaluate("blahblahblah") = 0 
ActiveWorkbook.Names("blahblahblah").Delete 

不过要小心,这两个可以创建无限循环,如果彭博社的数据也没有看到检索或如果它的确如此,但其中有一些非数字数据。