我自建的框架,有两个主窗格,一个是1分钟k线,一个是日k线,先用vba设置1分钟主图的显示时段,正常,如下程序。然后再用同样方法设置日k线图的显示时段,但日k线不起作用,是为什么?yGrid.ReInitDataFormula
MyGrid.LockTimeSect=1
MyGrid.LockTimeSectStart=StartTimeMyGrid.LockTimeSectEnd=EndTime
MyGrid.ReInitDataFormula
MyFrame.ReCalcAllGridFromula()
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
我们内部测试时用2个框架通过宏定义来刷新是正常的。
看你的代码,中间有很多过程和变量,怀疑你的代码出现了逻辑问题,建议你用Application.msgout函数,对你的代码做一下调试吧,看看日线刷新部分到底执行过去了没有
做了个简单的测试公式
Sub Test()
dim MyGrid1
dim myGrid2
Set MyGrid1 = Frame1.GetGridByName("Window1")
MyGrid1.LockTimeSect=1
MyGrid1.LockTimeSectStart="2014-3-27 09:20:00"
MyGrid1.LockTimeSectEnd="2014-3-27 15:10:00"
MyGrid1.ReInitDataFormula
Set MyGrid2 = Frame1.GetGridByName("Window2")
MyGrid2.LockTimeSect=1
MyGrid2.LockTimeSectStart="2014-3-27 09:20:00"
MyGrid2.LockTimeSectEnd="2014-3-27 15:10:00"
MyGrid2.ReInitDataFormula
End Sub
没发现你说的问题,建议你还是用调试手段多调试下你的代码吧
你的程序两个窗格的都是1分钟线,而我是用在一个是1分钟线,一个是日线。就是你这个程序第二个窗格的改成日线,对日线的控制就不行了。你可以再试下。
Sub Test()
dim MyGrid1
dim myGrid2
Set MyGrid1 = Frame1.GetGridByName("Main")
MyGrid1.LockTimeSect=1
MyGrid1.LockTimeSectStart="2014-3-27 09:20:00"
MyGrid1.LockTimeSectEnd="2014-3-27 15:10:00"
MyGrid1.ReInitDataFormula
Set MyGrid2 = Frame1.GetGridByName("日线")
MyGrid2.LockTimeSect=1
MyGrid2.LockTimeSectStart="2014-4-1"
MyGrid2.LockTimeSectEnd="2014-4-5"
MyGrid2.ReInitDataFormula
End Sub
确实是有点问题,这个问题主要是之前你已经在1分钟周期上做过时段限定导致的,我们会再下个升级版修正该问题