VB函数缺省的判断

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB函数缺省的判断相关的知识,希望对你有一定的参考价值。

private function abc (byval a as long ,byval b as long ,byval c as long)as long
abc = a+b+c
end function
这是乱写的小函数
如果我调用时缺省了一个参数,怎么判断?
比如d = abc(1,2)或者d = abc(1,,3)
我怎么判断哪个参数木有写?
发错区域。望不要删

可选参数有默认值,Optional part2 As Integer = 2,
如果没有指定默认值,则按变量该类型的默认值参与运算,Integer型为0。
在默认值运算结果的情况下,写函数的时候可以不判断,直接写进去;
如果需要判断,判断参数是否等于默认值。
参考技术A 如果你在定义函数时没有使用optional关键字的话,不会通过编译的.自然也就不存在判断的问题了.
转VB了.
参考技术B private function abc(optional a as long=0,optional b as long=0,optional c as long=0)
abc=a+b+c
end function

'//调用
kk=abc(1,,3)本回答被提问者和网友采纳
参考技术C 记得VB中,对于未初始化的量,都按0值处理 参考技术D

人家问的是判断,不是怎么调用。但是提示者的函数写法也不对。可缺省参数前面要放置optional,判断是否忽略参数用IsMissing。比如:

'定义函数:
Private Function Test(Optional a As String, Optional b As String, Optional c As String) As Long
    Debug.Print StrPtr(a), StrPtr(b), StrPtr(c)
End Function
'调用:
Test "",,"text"

这样,你就可以在立即窗口看到结果了。StrPtr只针对vbNullString的字符串有效,如果有传递,即使是""也会有地址返回,如果是忽略的参数,就会返回0,对于数字型参数无能为力,只要optional建立就会有地址,因为不设置值,默认值就是0,也是合法数字。

EXCEL无需编写VB,内置函数完成-跨期费用计算

***********使用office中的EXCEL打开才可以!!!!!

WPS函数不同,不能兼容!!!!!!!!!!!!

先上说明:(为了便于区分嵌套的循环,外层使用 是-否,内层使用 yes-no

1、判断表头年份大于开始时间或者表头时间小于结束时间,直接填0
2、判断表头时间和开始时间是同一年:
是:判断结束时间和开始时间是否是同一年?
  yes--》(结束时间-开始时间+1天)*每天费用
  no--》(年末-开始时间计算+1天)*每天费用
否:判断表头时间和结束时间是否同一年?
  yes--》(结束时间-当年的第一天+1天)*每天费用
  no--》表头当年天数*每天费用

再上代码:

=

IF(
  OR(VALUE(LEFT(G$2,4))<YEAR($B3),VALUE(LEFT(G$2,4))>YEAR($C3)),
  0,
  IF(
    YEAR($B3)=VALUE(LEFT(G$2,4)),
    IF(
      YEAR($B3)=YEAR($C3),
      (DAYS($C3,$B3)+1)*$F3,
      (DAYS(TEXT(LEFT(G$2,4)&1231,"0-00-00"),$B3)+1)*$F3
    ),
    IF(
    YEAR($C3)=VALUE(LEFT(G$2,4)),
    (DAYS($C3,TEXT(LEFT(G$2,4)&"0101","0-00-00"))+1)*$F3,
    (DAYS(TEXT(VALUE(LEFT(G$2,4))&1231,"0-00-00"),TEXT(LEFT(G$2,4)&"0101","0-00-00"))+1)*$F3

    )
  )
)

注意几点:

1、注意单元格部分根据自己需求调整 主要是开始时间、结束时间、日均费用以及标题时间

2、表格中的表头是带有“年”字的所以需要进行截取

3、注意修改单元格格式,小数点位数根据需要修改。

 

表格内容:

技术图片

 

以上是关于VB函数缺省的判断的主要内容,如果未能解决你的问题,请参考以下文章

VB在过程中 optional的作用和用法 property是干啥的

vb过程的参数传递方式都有哪些?

VB 判断 半角 全角

求一段JS的函数代码....

在vb中传递参数的方法有几种 带你了解最常见的2种方法

VB中strconv 的作用