我已经开始学习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,以便将新记录插入到数据库工作表的下一行。
答案 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
尝试连续几次运行,你会看到它是如何工作的。如果我误解了请澄清你想要的东西。