使用 Excel VBA 以按月分割的付款方式填充数据库
Use Excel VBA to fill database with payments split in months
我正在制作电子表格来控制我的财务状况。
我制作了一个 VBA 代码,其中输入了 4 个不同的数据:i) 客户姓名; ii) 合同总价值; iii) 支付合同费用的月数; iv) 第一次付款的日期。
我已经能够完成并使用代码,该代码在 4 个不同的列中用这些信息填充数据库。
问题是,我希望它(当我单击插入按钮时)自动拆分值并根据要支付的月数(分期付款)填充日期。例如:
用户表单
- 客户姓名:约翰
- 总价值:1,000.00 美元
- 付款次数: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
我正在制作电子表格来控制我的财务状况。 我制作了一个 VBA 代码,其中输入了 4 个不同的数据:i) 客户姓名; ii) 合同总价值; iii) 支付合同费用的月数; iv) 第一次付款的日期。
我已经能够完成并使用代码,该代码在 4 个不同的列中用这些信息填充数据库。
问题是,我希望它(当我单击插入按钮时)自动拆分值并根据要支付的月数(分期付款)填充日期。例如:
用户表单
- 客户姓名:约翰
- 总价值:1,000.00 美元
- 付款次数: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