以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 同一框架用vba设置不同周期的主图的显示时段有问题。 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=63429) |
-- 作者:szwangwei88 -- 发布时间:2014/4/2 16:17:22 -- 同一框架用vba设置不同周期的主图的显示时段有问题。 我自建的框架,有两个主窗格,一个是1分钟k线,一个是日k线,先用vba设置1分钟主图的显示时段,正常,如下程序。然后再用同样方法设置日k线图的显示时段,但日k线不起作用,是为什么? yGrid.ReInitDataFormula MyGrid.LockTimeSect=1 MyGrid.LockTimeSectStart=StartTime
MyGrid.LockTimeSectEnd=EndTime MyGrid.ReInitDataFormula MyFrame.ReCalcAllGridFromula() |
-- 作者:王锋 -- 发布时间:2014/4/2 16:36:21 -- 你全部代码发来我看看 |
-- 作者:szwangwei88 -- 发布时间:2014/4/2 16:49:29 -- dim MyFrame Sub UserForm1_Initialize() dim MyGrid dim MyGrid1 if www.HasVisible=1 then
Set MyFrame=www else Set MyFrame=Technic end if Set MyGrid=MyFrame.GetGridByName("Main") \'msgbox MyGrid.name Set MyGrid1=MyFrame.GetGridByName("细") \'msgbox MyGrid1.name UserForm1.Resizing=1 UserForm1.Move(MyGrid1.Width+MyGrid.Width-UserForm1.Width) UserForm1_TextBox1.Text="" UserForm1_TextBox2.Text="" End Sub Sub UserForm1_CommandButton1_Click() dim TextTime dim StartTime dim StartTime1 dim NextDate dim HistoryD dim MyGrid dim MyGrid2 dim StartPos dim EndTime dim StartDay Set MyGrid =MyFrame.GetGridByName("Main") TextTime=UserForm1_TextBox1.Text StartTime=CDate(TextTime) If WeekDay(StartTime)=1 then
StartTime=StartTime-2 ElseIf WeekDay(StartTime)=7 then
StartTime=StartTime-1 End If StartDay=StartTime \'msgbox starttime EndTime=StartTime+ #15:15:00# StartTime=StartTime+#09:16:00#
Set HistoryD = MyGrid.GetHistoryData() MyGrid.LockTimeSect=0 MyGrid.ReInitDataFormula StartPos=MyGrid.PosByDate(StartTime) \'msgbox startpos StartTime1=MyGrid.DateByPos(StartPos) If StartTime<>StartTime then
msgbox "无此日数据"
Exit Sub end if MyGrid.ReInitDataFormula MyGrid.LockTimeSect=1 \'msgbox starttime MyGrid.LockTimeSectStart=StartTime MyGrid.LockTimeSectEnd=EndTime MyGrid.ReInitDataFormula MyFrame.ReCalcAllGridFromula() EndTime=EndTime UserForm1_TextBox1.Text= StartDay If MyFrame.name="www" then
Set MyGrid2=MyFrame.GetGridByName("日线")
MyGrid2.LockTimeSect=1
StartTime=MyGrid2.PosByDate(StartDay)-50
StartTime=MyGrid2.DateByPos(StartTime)
MyGrid2.LockTimeSectStart=StartTime
MyGrid2.LockTimeSectEnd=StartDay
MyGrid2.ReInitDataFormula
MyFrame.ReCalcAllGridFromula() End If
End Sub
|
-- 作者:szwangwei88 -- 发布时间:2014/4/3 17:02:58 -- 程序在贴出,等答复。 |
-- 作者:王锋 -- 发布时间:2014/4/4 10:40:34 -- 我们内部测试时用2个框架通过宏定义来刷新是正常的。 看你的代码,中间有很多过程和变量,怀疑你的代码出现了逻辑问题,建议你用Application.msgout函数,对你的代码做一下调试吧,看看日线刷新部分到底执行过去了没有 |
-- 作者:szwangwei88 -- 发布时间:2014/4/4 14:04:47 -- 不是两个框架,是同一框架。 |
-- 作者:王锋 -- 发布时间:2014/4/6 0:15:30 -- 做了个简单的测试公式
Sub Test()
Set MyGrid2 = Frame1.GetGridByName("Window2")
End Sub
没发现你说的问题,建议你还是用调试手段多调试下你的代码吧 |
-- 作者:szwangwei88 -- 发布时间:2014/4/6 9:34:23 -- 你的程序两个窗格的都是1分钟线,而我是用在一个是1分钟线,一个是日线。就是你这个程序第二个窗格的改成日线,对日线的控制就不行了。你可以再试下。 Sub Test()
Set MyGrid2 = Frame1.GetGridByName("日线")
End Sub
|
-- 作者:王锋 -- 发布时间:2014/4/6 23:41:45 -- 确实是有点问题,这个问题主要是之前你已经在1分钟周期上做过时段限定导致的,我们会再下个升级版修正该问题 |