VBA文本框到单元格

时间:2013-03-15 22:20:06

标签: excel excel-vba vba

我在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,等等上。

2 个答案:

答案 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可能需要一些时间来跟踪上一个填充的行。

希望这有助于你