VBA 2000年之后活期存款利息计算

VBA 2000年之后活期存款利息计算本例为工作中特殊需要 非银行给付利息方式 PrivateFunct Rate1000 ByValYearAsI AsLong 1 2 7 8 11 12 99 72 81 36 50 35 DimRateAsSin Year 2000 CaseIs lt 0 Rate 0Case0To1 Rate 0 99Case2To6

本例为工作中特殊需要,非银行给付利息方式:

Private Function CDI_Rate1000(ByVal Year As Integer) As Long '{1,2,7,8,11,12},{99,72,81,36,50,35} Dim Rate As Single Select Case (Year - 2000) Case Is < 0: Rate = 0 Case 0 To 1: Rate = 0.99 Case 2 To 6: Rate = 0.72 Case 7: Rate = 0.81 Case 8 To 10: Rate = 0.36 Case 11: Rate = 0.5 Case Is >= 12 Rate = 0.35 End Select CDI_Rate1000 = Rate * 1000 End Function Private Function TDI_Rate1000(ByVal Year As Integer) As Long '{1,3,5,7,8,9,10,11,12,13,15,16} '{2.25,1.98,2.25,2.52,4.14,2.52,2.25,2.5,3.5,3,2.75,1.5} Dim Rate As Single Select Case (Year - 2000) Case Is < 0: Rate = 0 Case 0 To 2: Rate = 2.25 Case 3 To 4: Rate = 1.98 Case 5 To 6: Rate = 2.25 Case 7: Rate = 2.52 Case 8: Rate = 4.14 Case 9: Rate = 2.52 Case 10: Rate = 2.25 Case 11: Rate = 2.5 Case 12: Rate = 3.5 Case 13 To 14: Rate = 3.2 Case 15: Rate = 2.75 Case Is >= 16 Rate = 1.5 End Select TDI_Rate1000 = Rate * 1000 End Function Private Function DaysR(ByVal ymd As Date) As Integer '某一天到该年底的天数(含此日) DaysR = DateSerial(Year(ymd), 12, 31) - ymd + 1 End Function Private Function DaysL(ByVal ymd As Date) As Integer '一年中某日之前的天数(不含此日) DaysL = ymd - DateSerial(Year(ymd), 1, 1) End Function Private Function Leap(ByVal Y As Integer) As Boolean Leap = (Y Mod 4 = 0 And Y Mod 100 <> 0) Or (Y Mod 400 = 0) End Function Private Function VtoD(ByVal vDate As Variant) As Variant Dim Y, M, D As Integer VtoD = True Select Case VarType(vDate) Case 0 To 2, Is = 6, Is > 8 VtoD = False Case 3 To 5 VtoD = VtoD(CStr(vDate)) Case 7: VtoD = Format(vDate, "yyyy-mm-dd") If VtoD < "2000-01-01" Then VtoD = False Case 8: If Len(vDate) <> 8 Then VtoD = False Exit Function End If For i = 1 To 8 If Asc(Mid(vDate, i, 1)) < 48 Or Asc(Mid(vDate, i, 1)) > 57 Then VtoD = False Exit Function End If Next Y = --Left(vDate, 4): M = --Mid(vDate, 5, 2): D = --Right(vDate, 2) If Y < 2000 Then VtoD = False If M > 12 Or M = 0 Then VtoD = False If D > 31 Or D = 0 Then VtoD = False If M = 2 And D > (28 + IIf(Leap(Y), 1, 0)) Then VtoD = False If VtoD = False Then Exit Function VtoD = Format(DateSerial(Y, M, D), "yyyy-mm-dd") End Select End Function Private Function CDInterest(ByVal Amounts As Double, ByVal vDate As Variant, Optional R As Boolean = False) As Double Dim dRate As Double vDate = VtoD(vDate) CDInterest = 0 If vDate = False Then MsgBox "日期格式错!" Exit Function End If If R Then CDInterest = Round(Amounts, 2) * CDI_Rate1000(Year(vDate)) / 1000 / 100 / 365 * DaysR(vDate) Else CDInterest = Round(Amounts, 2) * CDI_Rate1000(Year(vDate)) / 1000 / 100 / 365 * DaysL(vDate) End If End Function 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204625.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:54
下一篇 2026年3月19日 下午7:54


相关推荐

  • Git提交日志格式规约[通俗易懂]

    Git提交日志格式规约[通俗易懂]俗话说,无规矩不成方圆。前端时间,阿里诚意献上重磅大礼:《阿里巴巴Java开发手册》,首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。那么问题来了,Git提交日志是否需要规范化呢?答案是肯定的。

    2022年6月7日
    119
  • 在安卓手机上搭建 OpenClaw 完整教程

    在安卓手机上搭建 OpenClaw 完整教程

    2026年3月13日
    3
  • Pycharm必备快捷键整理

    Pycharm必备快捷键整理转自 公众号 Python 之禅工欲善其事必先利其器 Pycharm 是最受欢迎的 Python 开发工具 它提供的功能非常强大 是构建大型项目的理想工具之一 如果能挖掘出里面实用技巧 能带来事半功倍的效果 以下操作都是基于 Windows 平台下的默认 KeyMap 设置 在 Mac 也是类似的 0 快速查找文件开发大型项目时 文件数量非常庞大 有时要在不同的文件之间来回切换 如果还是从

    2026年3月27日
    2
  • Linux下如何修改host文件「建议收藏」

    Linux下如何修改host文件「建议收藏」1.进入host文件位置:cd/etc/2.编辑hosts文件:vi/etc/hosts3.修改方式类似windows4.重启系统reboot5.访问pingwww.xxx.com,能正常ping通。

    2022年10月12日
    6
  • bat 延迟执行后面命令_bat命令延时10秒启动程序

    bat 延迟执行后面命令_bat命令延时10秒启动程序1、使用WScirpt的sleep功能,精度0.001秒创建vbs延迟文件,然后在批处理文件中调用,使用WScript的sleep函数,实现sleep的效果。实战:1)创建文件sleep.vbs:sleep.vbs内容如下:WScript.sleep5000。2)调用vbsstart/waitsleep.vbs1、使用choice命令choice/t10/cyn/n/dn/m(10秒后打开)CHOICE[/Cchoices][/.

    2026年2月23日
    3
  • Matlab GUI上位机界面实现串口通信

    Matlab GUI上位机界面实现串口通信MatlabGUI因项目需求,不得不学的又杂又浅,趁着还没彻底忘记,写下来一些关键注意点。命令行窗口输入guide→BlankGUI→确定根据自己的需求,拖动选择对应的工具,如下图所示双击每一个对象,就可以弹出其检查器,修改其属性,字体大小、粗细、位置等,其中最关键的是两个,一是String,二是Tag,String是用来修改对象中的文字,Tag是所调用的代码名,这个要好的…

    2022年5月15日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号