excel - 将数据复制到具有连续每月日期的更多行中的宏
问题描述
我使用一个宏表格,在其中写下我每月收到 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$,但每月日期上升
我不是宏观专家
解决方案
您将需要验证条目。如果用户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
推荐阅读
- regex - postgres regexp_matches 不返回所有匹配项
- sql - 将空格转换为空字符串的好查询是什么?
- dafny - 使用后置条件修改 Dafny 中的数组
- java - Java/Processing mousePressed in loop 不工作
- html - Bootstrap - 如何在与 form-control-lg 高度相同的情况下实现更大高度的自定义选择?
- r - 如何在数据框/小标题中的字符串中小写第二个字母
- selenium - protractor/selenium 开始忽略 protractor.conf.js 中的 chrome 选项 (chromeOptions)
- python - 将刻度标签设置为常规重量
- python-3.x - 如何遍历 music21 和弦对象并将和弦的每个音符附加在一起,并将整个和弦作为一个元素存储到列表中?
- ansible - 如何使用变量的值来查找名称为所述值的另一个变量