标题: 请教自定义函数问题 [打印本页] 作者: kshtydyang 时间: 2007-11-14 21:51 标题: 请教自定义函数问题 我想自定义一个函数,只是水平有限,想请教各位老师们了.
公司财务结算时间段为每个月的21日至下一个月的20日,例如:6月21日~7月20日结算月为7月份;7月21日~8月20日以为一个结算为8月份,如何自定义一个函数来判定一个定单日期是属于那一个结算月呢?
Public Function OrderMonth(OrderDate As Date) As String
......'表达式或判定
OrderMonth="月份"
......'表达式或判定
OrderMonth="月份"
End Function
该如何写表达示或判定?望指教......作者: gdfsslec 时间: 2007-11-14 22:49
用DateSerial函数来写表达式判定,自己看一下就会了。
如果不行,再帮你作者: andymark 时间: 2007-11-14 23:15
Public Function OrderMonth(OrderDate As Date, BDate As Integer) As String
'BDate 为月份分隔日,根据实际设置
'用法: OrderMonth(#7/21/2007#, 21)
If Format(OrderDate, "d") < BDate Then
OrderMonth = Format(OrderDate, "yyyy-mm")
Else
OrderMonth = Format(DateAdd("m", 1, OrderDate), "yyyy-mm")
End If
End Function作者: fswxs 时间: 2007-11-15 10:41
学习 作者: hi-wzj 时间: 2007-11-15 11:07
我的专栏中也有一些关于自定义日期函数的例子可供参考。作者: kshtydyang 时间: 2007-11-15 20:05
谢谢各位老师,这个问题已解决了
Public Function MyMonth(Mydate As Date) As String
'首先取出传进来的参数值 年月日
Dim MyYear As Integer
Dim Mymoth As Integer
Dim Mday As Integer
MyYear = Year(Mydate)
MyMonth = Month(Mydate)
Mday = Day(Mydate)
'定义一个常量,
Const last_day = 20
If Mday > 20 Then
MyMonth = MyMonth + 1
If MyMonth > 12 Then
MyYear = MyYear + 1
MyMonth = 1
End If
End If
'定义一个字符型变量
Dim s As String
s = MyYear & "年" & Format(MyMonth, "00") & "月"
MyMonth = s
End Function
'立即窗口调试
?MyMonth (#2007-06-21#)
2007年07月
?MyMonth (#2007-12-21#)
2008年01月