用户将inputinput到特定的单元格,然后从VBA中下来

我是一名VBA初学者,我一直在这个问题上。 我有一个工作表,我需要UserForm将客户端名称input到特定的单元格中。 名字应该去的单元格是“B3”。 当用户提交信息时,表格应该清楚,下一个客户应该在“B4”中,依此类推。 问题是我不能使用下一行选项,因为下一行已经被填充,需要保持这样的状态。 有没有办法开始“B3”,并添加一个到最后一个单元格,每次用户input? 谢谢你的帮助!

根据你想要这样做的方式,你可以有一个从B3开始的循环,如果它是空的。 如果它是空的,则放入信息,如果不是,则增加1到下一行并检查行。 循环直到find一个空单元格。 另一种方法,如果你知道行将被统一填充是简单地使用函数ActiveSheet.UsedRange.Rows.Count这会给你最后一行数据的行号,然后只加1

基本上这将是:

Private Sub CommandButton1_Click() Dim I As Long Sheets("Sheet1").Activate ActiveSheet.Range("B3").Activate Do While IsEmpty(ActiveCell.Offset(I, 0)) = False I = I + 1 Loop ActiveCell.Offset(I, 0).Value = ComboBox1.Value End Sub 

你可以使用Ranga对象的End方法。 我的意思是,如果你使用set rng = Range(“E3”)。End(xlDown)给你下一个使用过的单元格,但是你有检查是否rng.Row是Cells.Rows.Count(1.048.576)if下面的所有单元格都是空的

我只是用一个单独的文本框在基本的用户窗体上试过,所以需要稍微修改以适应您的需求。

 Private Sub TextBox1_Change() Application.EnableEvents = False Cells(LastRow("Sheet1", "B") + 1, 2).Value = TextBox1.Value TextBox1.Value = "" Application.EnableEvents = False End Sub Public Function LastRow(SheetName As Variant, Col As Variant) As Long Application.Volatile True With ThisWorkbook.Sheets(SheetName) If .Cells(.Rows.Count, Col).Value <> "" Then LastRow = .Rows.Count Exit Function End If LastRow = .Cells(.Rows.Count, Col).End(xlUp).Row End With End Function 

另外,不要使用UsedRange来查找最后一行。 请参阅在VBA中查找上次使用的单元格的错误