我在具有Bloomberg许可证的PC上的空白Excel 2007工作簿中运行宏.宏将Bloomberg函数插入到sheet1中,以获取收益率曲线数据.一些附加功能的结果取决于完成和正确显示Bberg数据的第一个功能.当我单步执行程序时,它只显示'#N/A请求数据..".而不是查询的结果,无论我走得多慢.由于某些函数依赖于填充的字符串和数字字段结果,因此程序会在该代码处遇到运行时错误.当我停止调试 - 完全结束运行程序 - 然后出现应该填充的所有Bberg值.我希望在程序仍在运行时显示这些值.
我尝试使用DoEvents和Application.OnTime()的组合将控制权返回给操作系统,并使程序等待很长时间进行数据更新,但都没有工作.任何想法都会有所帮助.我的代码如下. wb是一个全局级工作簿,ws1是一个全局级工作表.
Public Sub Run_Me()
Public Sub Run_Me()
'Application.DisplayAlerts = False
'Application.ScreenUpdating = False
Call Populate_Me
Call Format_Me
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
结束子
Private Sub Populate_Me()
Private Sub Populate_Me()
Dim lRow_PM As Integer
Dim xlCalc As XlCalculation
Set wb = ThisWorkbook
Set ws1 = wb.Sheets(1)
'clear out any values from previous day
If wb.Sheets(ws1.Name).Range("A1").Value <> "" Then
wb.Sheets(ws1.Name).Select
Selection.ClearContents
End If
xlCalc = Application.Calculation
Application.Calculation = xlCalculationAutomatic …Run Code Online (Sandbox Code Playgroud) 在宏上工作,该宏将转到第一张工作表。我正在使用:
Sub GoToFirstSheet()
On Error Resume Next
Sheets(1).Select
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,如果工作表1是隐藏的,则将无法工作。如何合并进入未隐藏的第一张纸的方法?
尝试找到从选择中选择左上角单元格的最佳方法。当前的代码看起来太庞大,不是最佳方式:
Sub CAIShowHandle()
Dim TopLeftColumn As String
Dim TopLeftRow As String
'changing to only top left cell
With Selection
TopLeftRow = .Row
TopLeftColumn = Col_Letter(.Column)
End With
Range(TopLeftColumn & TopLeftRow).Select
End Sub
Run Code Online (Sandbox Code Playgroud)
Function Col_Letter(lngCol As Long) As String
Dim vArr
vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)
End Function
Run Code Online (Sandbox Code Playgroud)
有更好的方法来写这个吗?