Set Table = Report.GetGridByName("上海指数").GetTable()
msgbox Table.GetReportData(0)'这里不知道怎么写
'Getgrid这个方法也不会用
'取当前最新价
NewPrice = ReportData.NewPrice
MsgBox NewPrice
其中newprice就是reportdata里面的数据
Set Table = Report.GetGridByName("上海指数").GetTable()
for i=0 to table.rowcount()
Set StockData=table.getReportData(i)
application.MsgOut StockData.marketName
'报错缺少对象StockData,请问为什么? set StockData=nothing
set Table=nothing
本意是想从动态显示牌的列表中读出取出每一行合约,和这个合约对应的市场名称,比如RB00对应的SQ
Set Table = Report.GetGridByName("上海指数").GetTable()
for i=0 to Table.rowcount()-1
Set StockData=Table.getReportData(i)
application.MsgOut StockData.marketName '报错缺少对象StockData,请问为什么?
next
set StockData=nothing
set Table=nothing
代码修正后不再报错,但是
调用后停不下来。
代码放在Function 模块中,在Macro模块中调用。
开始放在Application.VbaStart()下调用也出现过这个问题(运行后不会停下来,直到死机。)
Funaction模块中代码:
Sub Report_RefurbishFinished(Table)
application.ActivateFrame("Report")
Set Table = Report.GetGridByName("上海指数").GetTable()
call table.SwitchBlock( "连续合约板块",1 )
for i=0 to table.rowcount()-1
Set StockData=Table.getReportData(i)
application.MsgOut StockData.marketName
set StockData=nothing
next
set Table=nothing
End Sub
Macro模块下代码:
Sub APPLICATION_VBAStart()
application.ClearMsg '控制台清屏
call Report_RefurbishFinished(Table) '读列表
End Sub
修改后不再报错,但VBA不会停下来,一直执行到金字塔崩溃。
之前把代码放在Application.VbaStart()下调用也有这个情况 ,
后来不放在vbaStart()之下 调用,而是直接把调用指令写在Macro模块下,这种情况不会一直执行
现在上述两种方式都一直执行,不会停止。
版本:V4.61 (X64)
1,Report_RefurbishFinished 事件是报表刷新时自动触发的,你通过在该事件中调用SwitchBlock会导致死循环,导致这个事件不断被重复触发
2,只有你自己创建的对象才需要销毁,从系统中获取的对象不要销毁,会导致内存使用异常。
下面代码改写后可以正常工作
Sub Report_RefurbishFinished
222(Table)
application.ActivateFrame("Report")
Set Table = Report.GetGridByName("上海指数").GetTable()
call table.SwitchBlock( "连续合约板块",1 )
for i=0 to table.rowcount()-1
Set StockData=Table.getReportData(i)
application.MsgOut StockData.marketName
'set StockData=nothing
next
'set Table=nothing
End Sub
Sub APPLICATION_VBAStart()
application.ClearMsg '控制台清屏
call Report_RefurbishFinished222(Table) '读列表
End Sub