Как Вы находите Високосный год в VBA?

Вы можете подавить сообщение об ошибке оболочки, перенаправив stderr, и вставить свое собственное, используя check_output вместо call:

import subprocess
import os

command = str('wrong command')
devnull = open(os.devnull, 'w')

try:
    output = subprocess.check_output(command, shell=True, stderr=devnull)
except subprocess.CalledProcessError:
    print("oops! wrong command")
    output = ""

print(output)
11
задан pnuts 16 July 2014 в 02:54
поделиться

4 ответа

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  

Я первоначально получил эту функцию от большого сайта Excel Chip Pearson.

Сайт Pearson

22
ответ дан 3 December 2019 в 01:01
поделиться
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

14
ответ дан 3 December 2019 в 01:01
поделиться

Если эффективность является соображением, и ожидаемый год случаен, то могло бы быть немного лучше сделать самый частый случай сначала:

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
5
ответ дан 3 December 2019 в 01:01
поделиться

Я нашел этот забавный на CodeToad:

Public Function IsLeapYear(Year As Varient) As Boolean
  IsLeapYear = IsDate("29-Feb-" & Year)
End Function 

Хотя я вполне уверен, что использование IsDate в функции, вероятно, медленнее, чем несколько если, elseifs.

2
ответ дан 3 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: