【发布时间】:2019-10-03 00:30:36
【问题描述】:
我正在尝试创建一个按日期范围(周)对数据进行排序的表格。我有一个用户表单,它有一个组合框,列出了表中存在的日期范围。从那里,有几个文本框可以输入数字。我的目标是有一个宏循环遍历表中的行并在到达具有相应日期范围的行时停止,然后将文本框中的值添加到该行中的相应单元格。我想我已经设置了循环:
** 更新代码:
Private Sub Submitb_Click()
intLastCol = Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column
intLastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To intLastRow
If Sheets("Sheet1").Cells(i, 4).Value = ComboBox1.Value Then
For j = 5 To intLastCol
Sheets("Sheet1").Cells(i, j).Value = Sheets("Sheet1").Cells(i, j).Value + Controls("Textbox" & 1).Value
Next j
End If
Next i
UserForm1.Hide
Call Form_Initialize
End Sub
目前将第一个文本框的值添加到该行中的所有 4 个单元格...关于如何解决这个问题的任何想法?
【问题讨论】:
-
到目前为止你尝试过什么?到目前为止,你的循环什么也没做......
-
这篇文章解释了获取列表框值与单元格值,以进行比较。 stackoverflow.com/questions/22836577/… 这篇文章展示了如何将文本框值写入单元格。 stackoverflow.com/questions/19519716/…
-
@MilesFett,到目前为止还不是很多,因为我真的不太了解 VBA(边走边学)。我知道我想转向代码的逻辑,而不是代码。理想情况下,循环将识别哪一行的日期范围与用户表单上选择的日期范围相匹配(组合框从 D2:D6 中提取值)。之后,标记为条目 1-4 的 4 个框将添加到该行中的现有数字中(参见屏幕截图)。我很确定我可以使用大量嵌套的 if 语句来实现这一点,但我正在尝试优化代码/使其干净,因此希望使用循环
-
好吧,开始尝试,告诉我们您遇到的问题
-
我在循环中添加了
If cell.Value = ComboBox1.Value Then cell.activate。我正在查看使用偏移量来移动一列并一次添加一个值,但我想知道是否有一种方法可以循环它,以便它遍历行中的每一列并向其中添加下一个用户表单条目而不是一大堆行(使用上面的文档作为一个简单的例子,实际的文档在用户表单中有 72 个条目),一次做一个会很痛苦