欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → VBA 日期计算Bug,怎么解决?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2778人关注过本帖树形打印复制链接

主题:VBA 日期计算Bug,怎么解决?

帅哥哟,离线,有人找我吗?
c100010222
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:61 积分:0 威望:0 精华:0 注册:2015/10/27 16:49:34
VBA 日期计算Bug,怎么解决?  发帖心情 Post By:2016/10/16 0:27:26 [只看该作者]

VBA自定义函数

Function CS03(Formula,dd,tt)
  
    CS03=0
    dim day
    day=dd+19000000

    CS03=day
End Function

 

 

PEL命令

dd0:=DATE();
tt:time(),NOAXIS;

aa:=CS03(dd0,tt);


msgout(1,NUMTOSTR(aa,0));

 

消息显示(只计算20根K线,日k线)

2016/10/16 00:24:15  20160908
2016/10/16 00:24:15  20160912
2016/10/16 00:24:15  20160912
2016/10/16 00:24:15  20160914
2016/10/16 00:24:15  20160920
2016/10/16 00:24:15  20160920
2016/10/16 00:24:15  20160920
2016/10/16 00:24:15  20160922
2016/10/16 00:24:15  20160924
2016/10/16 00:24:15  20160926
2016/10/16 00:24:15  20160928
2016/10/16 00:24:15  20160928
2016/10/16 00:24:15  20160928
2016/10/16 00:24:15  20160930
2016/10/16 00:24:15  20161010
2016/10/16 00:24:15  20161012
2016/10/16 00:24:15  20161012
2016/10/16 00:24:15  20161012
2016/10/16 00:24:15  20161014
2016/10/16 00:24:15  20161016

 

问题:没有单数的日期,只有偶数日期,为什么?

 

不加19000000时,消息显示是正确的。

 


 回到顶部
帅哥哟,离线,有人找我吗?
马良
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2016/10/16 6:52:14 [只看该作者]

不明白你的逻辑,为何要加1900000?

 回到顶部
帅哥哟,离线,有人找我吗?
c100010222
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:61 积分:0 威望:0 精华:0 注册:2015/10/27 16:49:34
  发帖心情 Post By:2016/10/16 9:41:01 [只看该作者]

你以为我想加啊,这是你们程序的bug,取日期函数dd0:=DATE();比如日期2016-10-16返回值是1161016,

但是VBA里有些函数又要用到“2016-10-16”,所以加19000000。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
c100010222
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:61 积分:0 威望:0 精华:0 注册:2015/10/27 16:49:34
  发帖心情 Post By:2016/10/16 9:54:37 [只看该作者]

不管怎么样,我发现VBA的变量,数据大的计算就会出错,例如,1161017+19000000 显示结果20161016,什么原因?


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2016/10/17 21:20:51 [只看该作者]

msgbox 1161017+19000000  
这样简单测试重现不了你说的问题,可能的原因是浮点数的精度造成的,你试试这样改进
 
dim day
 day=CLng(dd)+19000000
[此贴子已经被作者于2016-10-17 21:21:29编辑过]


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部