首页 > 解决方案 > 将数据复制到具有连续每月日期的更多行中的宏

问题描述

我使用一个宏表格,在其中写下我每月收到 X 次的金额 一个我想要的例子

根据我注册的时间,如何制作一个将在下个月继续填充新行的宏这是我现在拥有的代码,无需添加更多行

Private Sub CommandButton1_Click()
Dim lRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("sheets")
    lRow = ws.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Row
    With ws
        .Cells(lRow, 1).Value = ""
        .Cells(lRow, 2).Value = Me.TextBox1.Value
        .Cells(lRow, 3).Value = Me.TextBox2.Value
        .Cells(lRow, 4).Value = Me.TextBox3.Value
End With
    Unload Me
End Sub

(注意:这会添加新行,而不是以现有行为代价)

我会很高兴得到任何帮助、想法、意图

编辑: 更清楚我想要什么

如果我写在 9 号表格和 500$ 上,那么将添加 9 行,金额为 500$,但每月日期上升

我不是宏观专家

e

标签: excelvba

解决方案


您将需要验证条目。如果用户al;kjfdadsk输入任何文本框怎么办?您需要确保输入符合预期。

像这样限制输入:

Me.TextBox1= Number
Me.TextBox2= Date
Me.TextBox1=Number

您也可以修改它以确保Amount它是非负数。或者也许你想设置一个最大值Amount?无论哪种方式,都值得考虑一下您要在此处放置然后构建它们的限制。我在代码中为您添加了上面的 3 个限制。


Private Sub CommandButton1_Click()

'Validate entries    
If Not IsNumeric(Me.TextBox1) Then
    MsgBox "Invalid Amount Entry"
ElseIf Not IsDate(Me.TextBox2) Then
    MsgBox "Invalid Date Entry"
ElseIf Not IsNumeric(Me.TextBox3) Then
    MsgBox "Invalid Payment Entry"
End If

'Rest of code goes here and will be ran once the above entries are validated
Dim ws As Worksheet, LRow as Long, i as Integer
Set ws = Worksheets("sheets")

LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Offset(1, 0).Row

ws.Range("A" & LRow) = Me.TextBox2
ws.Range(ws.Cells(LRow, 2), ws.Cells(LRow + Me.TextBox1, 2)) = Me.TextBox3

For i = (LRow + 1) To (LRow + Me.TextBox1 - 1)
    ws.Range("A" & i ) = DateAdd("m", 1, ws.Range("A" & i -1)
Next i

Unload Me

End Sub

推荐阅读