我在 Excel 中有一个用户输入界面,如下所示:
其中单元格B1、B2是用户输入单元格; A4及以下也是用户输入单元格,但行数不受限制,因此用户可以输入3个帐户(如屏幕截图示例所示),或更多;
我希望添加一个宏,当用户单击“提交”时,结果将合并到另一个工作表中,格式如下:
在“帐户”下输入的数据的显示被分为不同的行,而名字和姓氏条目则成倍增加;
通过VBA,我可以实现Account下一笔数据提交的基本功能,使用的是:
Private Sub data_input()
ws_output = "Sheet2"
next_row = Sheets(ws_output).Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
Sheets(ws_output).Cells(next_row, 1).Value = Range("FN").Value
Sheets(ws_output).Cells(next_row, 2).Value = Range("LN").Value
Sheets(ws_output).Cells(next_row, 3).Value = Range("A_1").Value
End Sub
(FN、LN、A_1 是我分配给用户输入单元格的名称)
但是,除非我多次复制并粘贴 Sheets(ws_output).Cells(next_row, 1) 行,否则它无法实现“Account”下的多个数据条目,也不会自行检测用户在“Account”下输入了多少行数据账户;
有哪些方法可以通过 Twitter 发布 VBA 代码来实现此目的;
非常感谢,
Option Explicit
Private Sub data_input()
Dim ws_output As String
Dim sht_out As Worksheet, c As Range
Dim ws_in As String, lastRow As Long
ws_in = "Sheet1"
ws_output = "Sheet2"
Set sht_out = Sheets(ws_output)
' Locate the first blank cell in Col A on sht_out
Set c = sht_out.Cells(sht_out.Rows.Count, 1).End(xlUp).Offset(1, 0)
' Last row of user input
lastRow = Sheets(ws_in).Cells(Sheets(ws_in).Rows.Count, 1).End(xlUp).Row
If lastRow > 3 Then
With c.Resize(lastRow - 3, 1)
' Populate data on sht_out
.Value = Range("FN").Value
.Offset(0, 1).Value = Range("LN").Value
.Offset(0, 2).Value = Sheets(ws_in).Range("A4:A" & lastRow).Value
End With
End If
End Sub