我正在尝试创建一个无害的循环,而bloomberg刷新大量数据。数据刷新后我想要打印(不是问题)。问题是,等待和其他VBA延迟命令实际上由于某种原因停止刷新数据。貌似像布隆伯格的问题。
我正在寻找一个简单的Do(某事?)循环,直到范围是所有数字(isnumber)。我只需要程序继续运行,直到所有数据都更新,然后它就可以打印并继续运行。是否有一个简单的do循环,直到范围是我可以使用的所有数字?感谢
答案 0 :(得分: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
另一种是在VBA中执行Excel公式,如下所示:
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
但是要小心,如果Bloomberg数据没有检索到它们,或者如果它确实存在,但是其中有一些非数字数据,这两个都可以创建无限循环。