我在excel中有一个输入用户表单,用户将数据输入到三个不同的文本框中。这是我的代码
Private Sub Process_Click()
Worksheets("1").Range("A1").Value = Date.Value
Worksheets("1").Range("B1").Value = Name.Value
Worksheets("1").Range("C1").Value = Amount.Value
End Sub
因此,当我第一次按下进程时,它会将数据写入单元格A1,b1和C1。我想要做的是,每当我打开表单并单击我的表单上的进程时,我希望这些值能够连续下去,例如下次单击进程时它将转到A2,b2和c2,等等上。
答案 0 :(得分:2)
这与巴兰卡的答案类似。
基本思路是一样的。检查最后填充的行,并将数据追加到比该行低一行。
此处用于查找上一个填充行的方法可能比使用while
循环稍微有效一些,但您应该测试两者以便自己查看:
Private Sub Process_Click()
Dim appendRow As Long
' add 1 to get the row after the last-populated row
appendRow = Worksheets("1").Cells(Rows.Count,1).End(XlUp).Row + 1
Worksheets("1").Range("A" & appendRow).Value = Date.Value
Worksheets("1").Range("B" & appendRow).Value = Name.Value
Worksheets("1").Range("C" & appendRow).Value = Amount.Value
End Sub
答案 1 :(得分:0)
首先,您需要知道哪个是最后一个填充的单元格。这可以轻松地导航范围。假设所有三列都填充了数据,您只能读取一个(假设为A
)以获取最后一行:
Dim i as Integer
i = 1
while Worksheets("1").Range("A" & i).Value <> "" or Worksheets("1").Range("A" & i).Value <> 0
i = i + 1
wend
现在您知道填充的最后一行:
Worksheets("1").Range("A" & i).Value = Date.Value
Worksheets("1").Range("B" & i).Value = Name.Value
Worksheets("1").Range("C" & i).Value = Amount.Value
这只是解决问题的一种方法,如果你的数据集不是很大,它就可以工作。如果您有一个很长的表,那么while
可能需要一些时间来跟踪上一个填充的行。
希望这有助于你