鱼C论坛

 找回密码
 立即注册
查看: 52|回复: 6

[已解决]请问有没有一个银行存款本金加上利息的统计表?

[复制链接]
发表于 11 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问能不能写一个银行存款本金加上利息的统计表?
要求是:1.用VB写:
            2.先让用户输入月存金额、存款年限后,按银行公布利率自动统计出3年后、5年后、10年后、20年后各能存下多少钱(含本金和利息);
           3.自动生成一个excel表格,可以打印出来。
最佳答案
11 小时前
当然可以!以下是一个用VB编写的简单程序,它会根据您输入的月存金额、存款年限和年利率,计算并显示3年、5年、10年、20年后的总金额(本金加利息)。程序假设利息按月复利计算,并处理了存款年限与输出年份的关系。

代码如下:


  1. Imports System

  2. Module Module1
  3.     Sub Main()
  4.         Dim monthlyDeposit As Double
  5.         Dim depositYears As Integer
  6.         Dim annualInterestRate As Double

  7.         Console.WriteLine("请输入月存金额(元):")
  8.         monthlyDeposit = CDbl(Console.ReadLine())

  9.         Console.WriteLine("请输入存款年限:")
  10.         depositYears = CInt(Console.ReadLine())

  11.         Console.WriteLine("请输入年利率(%):")
  12.         annualInterestRate = CDbl(Console.ReadLine())

  13.         ' 转换年利率为小数
  14.         Dim r As Double = annualInterestRate / 100
  15.         Dim monthlyRate As Double = r / 12

  16.         ' 计算存款年限结束时的金额
  17.         Dim totalAmountAtEnd As Double
  18.         If monthlyRate = 0 Then
  19.             totalAmountAtEnd = monthlyDeposit * 12 * depositYears ' 无利息情况
  20.         Else
  21.             totalAmountAtEnd = monthlyDeposit * (Math.Pow(1 + monthlyRate, 12 * depositYears) - 1) / monthlyRate
  22.         End If

  23.         ' 定义输出年份
  24.         Dim outputYears() As Integer = {3, 5, 10, 20}
  25.         For Each T As Integer In outputYears
  26.             Dim amount As Double
  27.             If T <= depositYears Then
  28.                 If monthlyRate = 0 Then
  29.                     amount = monthlyDeposit * 12 * T
  30.                 Else
  31.                     amount = monthlyDeposit * (Math.Pow(1 + monthlyRate, 12 * T) - 1) / monthlyRate
  32.                 End If
  33.             Else
  34.                 amount = totalAmountAtEnd * Math.Pow(1 + monthlyRate, 12 * (T - depositYears))
  35.             End If
  36.             Console.WriteLine("{0}年后:{1:F2}元", T, amount)
  37.         Next

  38.         Console.ReadLine() ' 等待用户按键结束
  39.     End Sub
  40. End Module
复制代码


使用说明:
1. 运行程序后,依次输入月存金额(例如1000)、存款年限(例如20)和年利率(例如3表示3%)。
2. 程序会自动计算并显示3年、5年、10年、20年后的总金额。

注意:如果存款年限小于输出年份(如存款10年但查询20年后),程序会计算存款结束后的复利增长。您可以根据实际银行利率调整输入值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 11 小时前 | 显示全部楼层
当然可以!以下是一个使用VB编写的银行存款本息统计表程序,可以计算不同年限后的存款总额:


  1. Module Module1
  2.     Sub Main()
  3.         Dim monthlyDeposit As Double
  4.         Dim depositYears As Integer
  5.         Const annualRate As Double = 0.03 ' 假设年利率为3%
  6.         
  7.         Console.WriteLine("银行存款本息统计表")
  8.         Console.Write("请输入月存金额(元):")
  9.         monthlyDeposit = CDbl(Console.ReadLine())
  10.         
  11.         Console.Write("请输入存款年限:")
  12.         depositYears = CInt(Console.ReadLine())
  13.         
  14.         Console.WriteLine(vbCrLf & "计算结果:")
  15.         Console.WriteLine("存款年限{0}年,月存{1}元,年利率{2}%" & vbCrLf,
  16.                          depositYears, monthlyDeposit, annualRate * 100)
  17.         
  18.         ' 计算各年限后的本息总额
  19.         Dim years() As Integer = {3, 5, 10, 20}
  20.         For Each year As Integer In years
  21.             If year <= depositYears Then
  22.                 Dim total As Double = CalculateTotal(monthlyDeposit, annualRate, year)
  23.                 Console.WriteLine("{0}年后本息总额:{1:F2}元", year, total)
  24.             Else
  25.                 Console.WriteLine("{0}年后:存款年限不足", year)
  26.             End If
  27.         Next
  28.         
  29.         Console.ReadLine()
  30.     End Sub
  31.    
  32.     Function CalculateTotal(monthlyDeposit As Double, annualRate As Double, years As Integer) As Double
  33.         Dim monthlyRate As Double = annualRate / 12
  34.         Dim months As Integer = years * 12
  35.         Dim total As Double = 0
  36.         
  37.         For i As Integer = 1 To months
  38.             total = (total + monthlyDeposit) * (1 + monthlyRate)
  39.         Next
  40.         
  41.         Return total
  42.     End Function
  43. End Module
复制代码


使用说明:

1. 程序首先要求输入两个参数:
   - 月存金额:每月定期存入的金额
   - 存款年限:计划存款的总年数

2. 程序会自动计算并显示:
   - 3年后的本息总额
   - 5年后的本息总额
   - 10年后的本息总额
   - 20年后的本息总额

3. 计算规则:
   - 采用复利计算方式
   - 每月末存入固定金额
   - 假设年利率为3%(可根据实际利率修改代码中的annualRate常量)

注意:如果输入的存款年限小于某个计算年限(比如只存了5年但想查看10年后的情况),程序会提示“存款年限不足”。

这个程序可以帮您清楚地看到长期坚持存款的效果,非常适合做理财规划!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层    本楼为最佳答案   
当然可以!以下是一个用VB编写的简单程序,它会根据您输入的月存金额、存款年限和年利率,计算并显示3年、5年、10年、20年后的总金额(本金加利息)。程序假设利息按月复利计算,并处理了存款年限与输出年份的关系。

代码如下:


  1. Imports System

  2. Module Module1
  3.     Sub Main()
  4.         Dim monthlyDeposit As Double
  5.         Dim depositYears As Integer
  6.         Dim annualInterestRate As Double

  7.         Console.WriteLine("请输入月存金额(元):")
  8.         monthlyDeposit = CDbl(Console.ReadLine())

  9.         Console.WriteLine("请输入存款年限:")
  10.         depositYears = CInt(Console.ReadLine())

  11.         Console.WriteLine("请输入年利率(%):")
  12.         annualInterestRate = CDbl(Console.ReadLine())

  13.         ' 转换年利率为小数
  14.         Dim r As Double = annualInterestRate / 100
  15.         Dim monthlyRate As Double = r / 12

  16.         ' 计算存款年限结束时的金额
  17.         Dim totalAmountAtEnd As Double
  18.         If monthlyRate = 0 Then
  19.             totalAmountAtEnd = monthlyDeposit * 12 * depositYears ' 无利息情况
  20.         Else
  21.             totalAmountAtEnd = monthlyDeposit * (Math.Pow(1 + monthlyRate, 12 * depositYears) - 1) / monthlyRate
  22.         End If

  23.         ' 定义输出年份
  24.         Dim outputYears() As Integer = {3, 5, 10, 20}
  25.         For Each T As Integer In outputYears
  26.             Dim amount As Double
  27.             If T <= depositYears Then
  28.                 If monthlyRate = 0 Then
  29.                     amount = monthlyDeposit * 12 * T
  30.                 Else
  31.                     amount = monthlyDeposit * (Math.Pow(1 + monthlyRate, 12 * T) - 1) / monthlyRate
  32.                 End If
  33.             Else
  34.                 amount = totalAmountAtEnd * Math.Pow(1 + monthlyRate, 12 * (T - depositYears))
  35.             End If
  36.             Console.WriteLine("{0}年后:{1:F2}元", T, amount)
  37.         Next

  38.         Console.ReadLine() ' 等待用户按键结束
  39.     End Sub
  40. End Module
复制代码


使用说明:
1. 运行程序后,依次输入月存金额(例如1000)、存款年限(例如20)和年利率(例如3表示3%)。
2. 程序会自动计算并显示3年、5年、10年、20年后的总金额。

注意:如果存款年限小于输出年份(如存款10年但查询20年后),程序会计算存款结束后的复利增长。您可以根据实际银行利率调整输入值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 11 小时前 | 显示全部楼层

报错:    “Imports System”
   编译错误:无效外部过程。

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层
凊风 发表于 2025-10-21 10:12
报错:    “Imports System”
   编译错误:无效外 ...


很抱歉听到您遇到了编译错误。错误“无效外部过程”通常是因为在VBA中使用了VB.NET的语法(如`Imports System`)。VBA是Visual Basic for Applications,常用于Office宏编程,它与VB.NET有些区别。以下是修正后的VBA代码,适用于Excel环境,可以计算本息并生成Excel表格。


  1. Sub DepositCalculator()
  2.     Dim monthlyDeposit As Double
  3.     Dim annualRate As Double
  4.     Dim monthlyRate As Double
  5.     Dim years As Variant
  6.     Dim i As Integer
  7.     Dim totalAmount As Double
  8.     Dim months As Integer
  9.    
  10.     ' 获取用户输入
  11.     monthlyDeposit = InputBox("请输入月存金额(元):", "输入月存金额")
  12.     If monthlyDeposit = "" Then Exit Sub ' 用户取消输入
  13.     monthlyDeposit = CDbl(monthlyDeposit)
  14.    
  15.     ' 存款年限在这里未用于计算,但根据要求保留输入
  16.     Dim depositYears As Integer
  17.     depositYears = InputBox("请输入存款年限:", "输入存款年限")
  18.     If depositYears = "" Then Exit Sub
  19.     depositYears = CInt(depositYears)
  20.    
  21.     annualRate = InputBox("请输入年利率(%):", "输入年利率")
  22.     If annualRate = "" Then Exit Sub
  23.     annualRate = CDbl(annualRate) / 100 ' 转换为小数形式
  24.    
  25.     ' 计算月利率
  26.     monthlyRate = annualRate / 12
  27.    
  28.     ' 定义输出年份:3年、5年、10年、20年
  29.     years = Array(3, 5, 10, 20)
  30.    
  31.     ' 创建Excel应用程序对象并生成表格
  32.     Dim xlApp As Object
  33.     Dim xlWB As Object
  34.     Dim xlWS As Object
  35.    
  36.     On Error Resume Next
  37.     Set xlApp = GetObject(, "Excel.Application")
  38.     If Err.Number <> 0 Then
  39.         Set xlApp = CreateObject("Excel.Application")
  40.     End If
  41.     On Error GoTo 0
  42.    
  43.     xlApp.Visible = True ' 使Excel窗口可见
  44.     Set xlWB = xlApp.Workbooks.Add
  45.     Set xlWS = xlWB.Worksheets(1)
  46.    
  47.     ' 设置表头
  48.     xlWS.Cells(1, 1).Value = "存款年限"
  49.     xlWS.Cells(1, 2).Value = "本息总额(元)"
  50.     xlWS.Cells(1, 3).Value = "备注"
  51.    
  52.     ' 计算并写入数据
  53.     For i = 0 To UBound(years)
  54.         months = years(i) * 12
  55.         If monthlyRate = 0 Then
  56.             totalAmount = monthlyDeposit * months ' 无利息情况
  57.         Else
  58.             totalAmount = monthlyDeposit * ((1 + monthlyRate) ^ months - 1) / monthlyRate
  59.         End If
  60.         xlWS.Cells(i + 2, 1).Value = years(i) & "年后"
  61.         xlWS.Cells(i + 2, 2).Value = Round(totalAmount, 2) ' 保留两位小数
  62.         xlWS.Cells(i + 2, 3).Value = "月存" & monthlyDeposit & "元,年利率" & annualRate * 100 & "%"
  63.     Next i
  64.    
  65.     ' 自动调整列宽
  66.     xlWS.Columns("A:C").AutoFit
  67.    
  68.     ' 提示用户表格已生成,可以打印
  69.     MsgBox "Excel表格已生成,请查看并打印。", vbInformation, "完成"
  70.    
  71.     ' 清理对象(可选,避免内存泄漏)
  72.     Set xlWS = Nothing
  73.     Set xlWB = Nothing
  74.     Set xlApp = Nothing
  75. End Sub
复制代码


**使用说明:**
1. 在Excel中打开VBA编辑器(按 Alt + F11)。
2. 插入一个新模块(通过菜单 插入 > 模块)。
3. 将上述代码粘贴到模块中。
4. 运行宏(按 F5 或通过菜单 运行 > 运行子过程/用户窗体)。
5. 按照输入框提示输入月存金额、存款年限和年利率。
6. 程序会自动生成Excel表格,显示3年、5年、10年、20年后的本息总额。表格已调整格式,可直接打印。

**注意事项:**
- 代码假设利息按月复利计算。
- 存款年限输入后未直接用于计算输出年份,但根据您的要求保留了输入步骤。
- 如果年利率为0,则按无利息计算。
- 生成表格后,Excel窗口会自动打开,您可以通过 文件 > 打印 来打印表格。

如果您在运行中遇到其他问题,请检查VBA环境设置或提供更多错误详情。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 11 小时前 | 显示全部楼层
FishC 发表于 2025-10-21 10:15
很抱歉听到您遇到了编译错误。错误“无效外部过程”通常是因为在VBA中使用了VB.NET的语法(如`Imports  ...

用户录入6000后
报错:“If monthlyDeposit = "" Then Exit Sub ' 用户取消输入”
      运行时错误“13”: 类型不匹配
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层
凊风 发表于 2025-10-21 10:18
FishC 发表于 2025-10-21 10:15
很抱歉听到您遇到了 ...


您遇到的类型不匹配错误是因为在VBA中,`InputBox`函数返回的是字符串类型,而您试图将字符串直接赋值给`Double`类型的变量。让我修正这个问题:


Sub DepositCalculator()
    Dim monthlyDeposit As Double
    Dim annualRate As Double
    Dim monthlyRate As Double
    Dim years As Variant
    Dim i As Integer
    Dim totalAmount As Double
    Dim months As Integer
   
    ' 获取用户输入 - 修正类型转换问题
    Dim inputValue As String
   
    inputValue = InputBox("请输入月存金额(元):", "输入月存金额")
    If inputValue = "" Then Exit Sub ' 用户取消输入
    monthlyDeposit = CDbl(inputValue)
   
    inputValue = InputBox("请输入存款年限:", "输入存款年限")
    If inputValue = "" Then Exit Sub
    Dim depositYears As Integer
    depositYears = CInt(inputValue)
   
    inputValue = InputBox("请输入年利率(%):", "输入年利率")
    If inputValue = "" Then Exit Sub
    annualRate = CDbl(inputValue) / 100 ' 转换为小数形式
   
    ' 计算月利率
    monthlyRate = annualRate / 12
   
    ' 定义输出年份:3年、5年、10年、20年
    years = Array(3, 5, 10, 20)
   
    ' 创建Excel应用程序对象并生成表格
    Dim xlApp As Object
    Dim xlWB As Object
    Dim xlWS As Object
   
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        Set xlApp = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
   
    xlApp.Visible = True ' 使Excel窗口可见
    Set xlWB = xlApp.Workbooks.Add
    Set xlWS = xlWB.Worksheets(1)
   
    ' 设置表头
    xlWS.Cells(1, 1).Value = "存款年限"
    xlWS.Cells(1, 2).Value = "本息总额(元)"
    xlWS.Cells(1, 3).Value = "备注"
   
    ' 计算并写入数据
    For i = 0 To UBound(years)
        months = years(i) * 12
        If monthlyRate = 0 Then
            totalAmount = monthlyDeposit * months ' 无利息情况
        Else
            totalAmount = monthlyDeposit * ((1 + monthlyRate) ^ months - 1) / monthlyRate
        End If
        xlWS.Cells(i + 2, 1).Value = years(i) & "年后"
        xlWS.Cells(i + 2, 2).Value = Round(totalAmount, 2) ' 保留两位小数
        xlWS.Cells(i + 2, 3).Value = "月存" & monthlyDeposit & "元,年利率" & annualRate * 100 & "%"
    Next i
   
    ' 自动调整列宽
    xlWS.Columns("A:C").AutoFit
   
    ' 提示用户表格已生成,可以打印
    MsgBox "Excel表格已生成,请查看并打印。", vbInformation, "完成"
   
    ' 清理对象(可选,避免内存泄漏)
    Set xlWS = Nothing
    Set xlWB = Nothing
    Set xlApp = Nothing
End Sub


主要修改:

1. 添加了inputValue字符串变量来接收InputBox的返回值
2. 先检查字符串是否为空,然后再转换为数值类型
3. 这样避免了直接将字符串赋值给数值变量导致的类型不匹配错误

现在当您输入6000时,程序应该能正常运行,不会再出现类型不匹配的错误。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-21 21:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表