VBA Inbut框与循环

我刚刚开始学习VBA(和一般编码),我面临的问题,我还没有find一个解决scheme。 我想创build一个循环的input框,以便input框的输出将被打印到单独的单元格。 例如,我想在input框中input数字“5”,输出将打印到单元格“A1”,而下一个input,比如说数字“9”将打印到单元格“A2”。

到目前为止,我已经设法做到这一点,一切工作正常,除了最后一行,因为我不知道如何从这里继续。

Private Sub CommandButton1_Click() Dim myValue As Variant myValue = InputBox("Please insert number") Range("A1").Select ActiveCell.Value = myValue Range(ActiveCell) = Range(ActiveCell) + 1 End Sub 

所有的帮助表示赞赏

尝试使用下面的代码

 Private Sub CommandButton1_Click() Dim myValue As Variant myValue = InputBox("Please insert number") Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1) = myValue End Sub 

编辑#1:根据user3598756的build议更新代码

 Private Sub CommandButton1_Click() Dim myValue As Variant myValue = InputBox("Please insert number") If Range("A" & Range("A" & Rows.Count).End(xlUp).Row).Value = "" Then Range("A" & Range("A" & Rows.Count).End(xlUp).Row) = myValue Else Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1) = myValue End If End Sub 

编辑

  • 缩短代码

  • 添加解决scheme应该单元格“A1”已经填充标题

下面的代码将会执行:

 Sub CommandButton1_Click() With Cells(Rows.Count, 1).End(xlUp) .Offset(IIf(.Value <> "", 1, 0)) = InputBox("Please insert number") End With End Sub 

其中“条件”偏移量是pipe理行1(无偏移量)或更低(1行偏移量)中的第一个空单元所必需的。

如果单元格“A1”已经被填充了标题,则代码缩写为:

 Sub CommandButton1_Click() Cells(Rows.Count, 1).End(xlUp).Offset(1) = InputBox("Please insert number") End Sub 

如果你想做一个循环 – 例如10次 – 那么你可以使用这个示例代码:

 Sub CommandButton1_Click() Dim counter As Integer Dim myValue As Variant For counter = 1 To 10 myValue = InputBox("Please insert number") Sheets("Sheet1").Cells(counter, 1).Value = myValue Next counter End Sub