以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  VBA编译时提示框架内代码缺少语句,为何?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=88871)

--  作者:ssfy_hf
--  发布时间:2015/12/26 20:00:51
--  VBA编译时提示框架内代码缺少语句,为何?
编写一个自定义函数,在编译时提示‘1024’错误,显示Technic框架内代码缺少语句,显示如下:

1  \'由于框架内的代码作用于全局,并且不会随着工程项目切换,
2  \'因此建议框架对象内的代码只编写与本框架事件有关的代码,不要使用作用于整个工程的变量及过程函数。
3
4  Sub MainFrame9_ChangeStock(Grid, Code, Market, Result)
5     if MoreCyc.HasVisible = 1 then
6         call morecyc.GetGridByName("Window1").ChangeStock(code,market)
7         call morecyc.GetGridByName("Window5").ChangeStock(code,market)
8         call morecyc.GetGridByName("Window2").ChangeStock(code,market)
9         call morecyc.GetGridByName("Window7").ChangeStock(code,market)
10       call morecyc.GetGridByName("Window8").ChangeStock(code,market)
11       call morecyc.GetGridByName("Window9").ChangeStock(code,market)
12       call morecyc.GetGridByName("Window3").ChangeStock(code,market)
13       call morecyc.GetGridByName("Window6").ChangeStock(code,market)
14       call morecyc.GetGridByName("Window4").ChangeStock(code,market)
15       morecyc.InitAllGrid
16    end if
17  End Sub
18
19  Sub Technic_RemoveFormula(Grid, FormulaName, Result)
20     if Grid.name = "Main" and FormulaName = "MAIN" then
21   result = 1
22  end if
23  End Sub

提示第9行出错。但是我并没有对框架代码进行过编辑,这是什么原因?

另外,现在VBA的调试菜单怎么调不出来了?


--  作者:王锋
--  发布时间:2015/12/27 18:41:23
--  
检查一下是否存在Window7这个窗格
--  作者:ssfy_hf
--  发布时间:2015/12/28 21:59:46
--  
没有,而且把整个1—23行都注释掉之后编译还提示编译器错误‘1024’,真是奇怪了
--  作者:ssfy_hf
--  发布时间:2015/12/28 22:08:01
--  
当我把Technic框架本项目移除后,就会显示另一个框架代码在第三行缺少语句,一直编译不成功


--  作者:王锋
--  发布时间:2015/12/28 22:24:42
--  
可能是VBA的工程代码被你给改乱了,建议你重新新建一个VBA的项目工程,让系统重新初始化VBA的环境状态
--  作者:ssfy_hf
--  发布时间:2016/1/2 15:16:14
--  
问题查找到了,是自定义函数内部编写错误,问题是金字塔在发现编译错误时,不能在有问题的那行代码显示错误,而是在另外框架函数页面显示,这样一是不能帮助编写者找到问题所在之处,更容易引起误会,还请修正。