每次用户单击命令按钮时,在excel中插入新的数据行

时间:2014-10-21 10:50:28

标签: excel vba excel-vba

我已经开始学习VBA编程,并考虑创建一个用于将学生详细信息插入Excel工作表的小应用程序。 在一个名为“Main”的Excel工作表中,我创建了一个表单来获取用户输入,在另一个名为“Database”的工作表中,我试图在每次用户单击按钮时插入一行记录。

我成功地能够插入一行数据,即数据库表中的第一行数据,但我的问题是 - 我想在用户输入记录并点击按钮后转到表格中的下一行第二次。同样是第三次等等。

我的代码是:

Private Sub CommandButton1_Click()
Dim i As String
Dim j As String
Dim k As String
Dim l as integer
i = Sheets("Main").Cells(1, 2).Value
j = Sheets("Main").Cells(2, 2).Value
k = Sheets("Main").Cells(3, 2).Value
Sheets("Main").Cells(1, 2).Value = ""
Sheets("Main").Cells(2, 2).Value = ""
Sheets("Main").Cells(3, 2).Value = ""
l=2
Sheets("Database").Cells(l, 1).Value = i
Sheets("Database").Cells(l, 2).Value = j
Sheets("Database").Cells(l, 3).Value = k
End Sub

每次用户点击命令按钮时,我希望将l的值增加1,以便将新记录插入到数据库工作表的下一行。

2 个答案:

答案 0 :(得分:1)

我们可以通过以下方式获取特定列的最后一行: -

dstRw = Sheets(2).Range(“A”& Rows.Count).End(xlUp).Row + 1

Private Sub CommandButton1_Click()
Dim i As String
Dim j As String
Dim k As String
Dim m As String
i = Sheets("Main").Cells(1, 2).Value
j = Sheets("Main").Cells(2, 2).Value
k = Sheets("Main").Cells(3, 2).Value
m = Sheets("Main").Cells(4, 2).Value
Sheets("Main").Cells(1, 2).Value = ""
Sheets("Main").Cells(2, 2).Value = ""
Sheets("Main").Cells(3, 2).Value = ""
Sheets("Main").Cells(4, 2).Value = ""
dstRw = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Database").Cells(dstRw, 1).Value = i
Sheets("Database").Cells(dstRw, 2).Value = j
Sheets("Database").Cells(dstRw, 3).Value = k
Sheets("Database").Cells(dstRw, 4).Value = m
End Sub

谢谢: - Nitish Gaurav

答案 1 :(得分:0)

对你想要什么感到很困惑。用户如何输入下一行?同样位于代码的顶部(您为i,j和k赋值),您正在迭代并基本上复制一列而不是一行。

我会尽力回答你问题的其余部分。要使VBA知道如何将数据复制到下一行,您可以执行以下操作:

Sub test()
i = "John"
j = "25"
k = "Male"
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Cells(lastRow + 1, 1) = i
Cells(lastRow + 1, 2) = j
Cells(lastRow + 1, 3) = k
End Sub

尝试连续几次运行,你会看到它是如何工作的。如果我误解了请澄清你想要的东西。