当前位置:  开发笔记 > 编程语言 > 正文

你是怎么在VBA找到Leapyear的?

如何解决《你是怎么在VBA找到Leapyear的?》经验,为你挑选了3个好方法。

什么是VBA中IsLeapYear函数的良好实现?

编辑:我运行if-then和DateSerial实现,迭代包含在计时器中,并且DateSerial平均更快1-2毫秒(5次运行300次迭代,1个平均单元工作表公式也工作).



1> Lance Robert..:
Public Function isLeapYear(Yr As Integer) As Boolean  

    ' returns FALSE if not Leap Year, TRUE if Leap Year  

    isLeapYear = (Month(DateSerial(Yr, 2, 29)) = 2)  

End Function  

我最初从Chip Pearson的Excel网站上获得了这个功能.

皮尔逊的网站


实际上,如果你研究他们正在做什么,它总是有效的.他们检查2月份是否有29天,这使它成为一个整整的月份.它基本上把微软的规则都归咎于微软.芯片有很多很好的解决方案.

2> seanyboy..:
public function isLeapYear (yr as integer) as boolean
    isLeapYear   = false
    if (mod(yr,400)) = 0 then isLeapYear  = true
    elseif (mod(yr,100)) = 0 then isLeapYear  = false
    elseif (mod(yr,4)) = 0 then isLeapYear  = true
end function

维基百科更多... http://en.wikipedia.org/wiki/Leap_year



3> Brent.Longbo..:

如果效率是一个考虑因素而且预期年份是随机的,那么首先做最常见的案例可能会稍好一些:

public function isLeapYear (yr as integer) as boolean
    if (mod(yr,4)) <> 0 then isLeapYear  = false
    elseif (mod(yr,400)) = 0 then isLeapYear  = true
    elseif (mod(yr,100)) = 0 then isLeapYear  = false
    else isLeapYear = true
end function


如果效率是目标,你可以摆脱isLeapYear = false,因为布尔值默认为false :)
推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有