Vba 我的用户定义函数正确吗?如何在Excel中使用它?
此VBA代码用于确定一年是否为闰年(结果为布尔值)。 代码如下:Vba 我的用户定义函数正确吗?如何在Excel中使用它?,vba,excel,Vba,Excel,此VBA代码用于确定一年是否为闰年(结果为布尔值)。 代码如下: Function ESTAnneeBixxstile(iAnne As Integer) As Boolean '////////////////////////////////////////////////////////////// ' Cette fonction détermine si une année est bissextile ' Elle retourne True (vrai ou -1) si l'ann
Function ESTAnneeBixxstile(iAnne As Integer) As Boolean
'//////////////////////////////////////////////////////////////
' Cette fonction détermine si une année est bissextile
' Elle retourne True (vrai ou -1) si l'année compote 366 jours,
' False (faux ou 0) sinon
Dime bReponse As Boolean
bReponse = False
If iAnnee Mod 4 = 0 Then
'///////////////////////////////////////////////////////
' Les années divisibles par 4 sont bissextiles
'///////////////////////////////////////////////////////
bReponse = True
If iAnnee Mod 100 = 0 Then
'//////////////////////////////////////////////////////
' Les années divisibles par 100 ne sont pas bissextiles.
'//////////////////////////////////////////////////////
bReponse = False
If iAnnee Mod 400 = 0 Then
'///////////////////////////////////////////////////////
' Mais les années divisibles par 400 sont bissextiles
'///////////////////////////////////////////////////////
bReponse = True
End If
End If
End If
ESTAnneeBissextile = bReponse
End Function
问题:
例如:
=estannebissextile(“单元名称”)
您确实有语法错误。将Dime-bReponse更改为Boolean
到Dim-bReponse为Boolean
,您就可以开始了。一旦您这样做了,您将能够完全按照(2)中指定的方式调用它,但在引用单元格时请不要使用引号。您确实有语法错误。将Dime-bReponse更改为Boolean
到Dim-bReponse为Boolean
,您就可以开始了。完成此操作后,您将能够完全按照(2)中指定的方式调用它,但在引用单元格时请不要使用引号。您提供的示例中存在一些问题
- “一角硬币”应该是“暗淡的”(正如上面艾林斯马修所提到的)
- 返回值列为“EstanneBissextile”,但函数名的拼写不同,为“EstanneBixxStile”。这每次都会导致错误的结果
- 您的变量输入称为“iAnne”,但您在代码中使用的变量是“iAnnee”。让sue使用相同的名称,否则结果将不准确
- 通过在代码顶部添加单词选项Explicit,您可以发现一些命名问题:李>
- 代码中的逻辑错误。如果一年可以是MOD 400,那么它应该是真的,但是在你的代码中,你只能检查它是否通过了前两个条件。确保在末尾将该检查作为自己的if语句分开,或者使用我下面提供的示例
Function leapCheck(year As Long) As Boolean
leapCheck = IsDate("2/29/" & year)
End Function
如果您想列出逻辑,另一个有趣的方法是:
Function isLeapYear(year As Long) As Boolean
If year Mod 400 = 0 Or year Mod 4 = 0 And year Mod 100 <> 0 Then
isLeapYear = True
Else
isLeapYear = False
End If
End Function
在您提供的示例中,您有一些问题
- “一角硬币”应该是“暗淡的”(正如上面艾林斯马修所提到的)
- 返回值列为“EstanneBissextile”,但函数名的拼写不同,为“EstanneBixxStile”。这每次都会导致错误的结果
- 您的变量输入称为“iAnne”,但您在代码中使用的变量是“iAnnee”。让sue使用相同的名称,否则结果将不准确
- 通过在代码顶部添加单词选项Explicit,您可以发现一些命名问题:李>
- 代码中的逻辑错误。如果一年可以是MOD 400,那么它应该是真的,但是在你的代码中,你只能检查它是否通过了前两个条件。确保在末尾将该检查作为自己的if语句分开,或者使用我下面提供的示例
Function leapCheck(year As Long) As Boolean
leapCheck = IsDate("2/29/" & year)
End Function
如果您想列出逻辑,另一个有趣的方法是:
Function isLeapYear(year As Long) As Boolean
If year Mod 400 = 0 Or year Mod 4 = 0 And year Mod 100 <> 0 Then
isLeapYear = True
Else
isLeapYear = False
End If
End Function
备选方案
=ISERROR(日期值(“2月29日-”&A1))
@AlexK。简单、清晰、已调试、免维护。。。我喜欢。可选=ISERROR(DATEVALUE(“2月29日-”&A1))
@AlexK。简单、清晰、已调试、免维护。。。我喜欢。哈!可以说这是一个典型的法语错误——在每件事的末尾添加一个e
:-)哈!可以说这是一个典型的法语错误——在所有内容的末尾添加一个e
:)