VBA文本框到单元格

我在Excel中有一个input用户表单,用户将数据input到三个不同的文本框中。 这是我的代码

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等上。

这与Barranka的答案类似。

基本的想法是一样的。 您检查最后填充的行,并将您的数据追加一行。

这里用来查找最后一行的行的方法可能比使用while循环稍微有效一些,但是你应该testing两个行为来看看你自己:

 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 

首先,你需要知道哪个是最后填充的单元格。 这可以很容易地导航范围。 假设所有三列都填充了数据,则只能读取一列(比如说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 

这只是解决这个问题的一种方法,如果你的数据集不是真的很大的话,它就可以工作。 不利的一面是,如果你有一张很长的桌子,那么可能需要一些时间来追踪最后一个人群。

希望这可以帮助你