使用 Excel VBA 以按月分割的付款方式填充数据库

Use Excel VBA to fill database with payments split in months

我正在制作电子表格来控制我的财务状况。 我制作了一个 VBA 代码,其中输入了 4 个不同的数据:i) 客户姓名; ii) 合同总价值; iii) 支付合同费用的月数; iv) 第一次付款的日期。

我已经能够完成并使用代码,该代码在 4 个不同的列中用这些信息填充数据库。

问题是,我希望它(当我单击插入按钮时)自动拆分值并根据要支付的月数(分期付款)填充日期。例如:

用户表单

  1. 客户姓名:约翰
  2. 总价值:1,000.00 美元
  3. 付款次数:4
  4. 第一次付款日期:2020 年 1 月 1 日

也就是说,约翰将在 2020 年 1 月 1 日(1 月)付给我 250 美元; 2020 年 2 月 1 日(2 月)250 美元等等……我希望它在数据库中显示如下内容:

Client Value Date - mm/dd/yyyy
Claire 2,000 12/05/2019 (example of a single payment on database)
John 250 01/01/2020
John 250 02/01/2020
John 250 03/01/2020
John 250 04/01/2020
Mark 500 06/02/2020 (example)

我不知道该怎么做...有人可以帮助我吗?

密码是:

Private Sub cmdAdd_Click()

Dim iRow As Long
Dim ws As Worksheet

Set ws = Worksheets("Projetos")

'find first empty row in database
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
    
'copy the data to the database
With ws
  .Cells(iRow, 2).Value = Me.boxCliente.Value
  .Cells(iRow, 3) = CCur(boxValor.Value)
  .Cells(iRow, 4).Value = Me.boxParcela.Value
  .Cells(iRow, 5) = CDate(boxData.Value)
End With

'clear the data
Me.boxCliente.Value = ""
Me.boxValor.Value = ""
Me.boxParcela.Value = ""
Me.boxData.Value = ""

End Sub

你可以试试这个代码。

它总是可以优化这个。也许有可能修复一些错误。但是没有文本数据表就不清楚了。

Private Sub cmdAdd_Click()

Dim iRow As Long
Dim ws As Worksheet
Dim Name a string
Dim counter As Integer
Dim money As Double
Dim Date as Date
Dim i As Integer

Set ws = Worksheets("Projetos")

'find first empty row in database
iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
    
'copy the data to the database
With ws
  .Cells(iRow, 2).Value = Me.boxCliente.Value 'Client
  .Cells(iRow, 3) = CCur(boxValor.Value) 'Money
  .Cells(iRow, 4).Value = Me.boxParcela.Value 'Number of Payments
  .Cells(iRow, 5) = CDate(boxData.Value) 'Date
  
  If .Cells(iRow, 4) <> 1 Then
    Name = .Cells(iRow, 2).Value
    counter = .Cells(iRow, 4).Value
    money = .Cells(iRow, 3).Value
    Date = .Cells(iRow, 5).Value
    
    For i = 0 To counter - 1
        .Cells(iRow + i, 2).Value = Name
        .Cells(iRow + i, 3).Value = money / counter
        .Cells(iRow + i, 5).Value = Format(DateAdd("m", i, Date), "mmddyyyy")
    Next i
        
End With

'clear the data
Me.boxCliente.Value = ""
Me.boxValor.Value = ""
Me.boxParcela.Value = ""
Me.boxData.Value = ""

End Sub