Excel VBA:循环输入框并将值添加到单元格范围
我有以下代码:Excel VBA:循环输入框并将值添加到单元格范围,vba,excel,Vba,Excel,我有以下代码: Private Sub ChangeAccountNames_Click() Dim AccountName As String Dim Rng As Range Dim InputQuestion As String Dim i As Integer Dim s As Worksheet Set s = Sheets("Essential Info") i = Cells(3, 9) Do Set Rng = Sheets("Essential Info").Range
Private Sub ChangeAccountNames_Click()
Dim AccountName As String
Dim Rng As Range
Dim InputQuestion As String
Dim i As Integer
Dim s As Worksheet
Set s = Sheets("Essential Info")
i = Cells(3, 9)
Do
Set Rng = Sheets("Essential Info").Range("I2:I13")
InputQuestion = "Please enter in a bank account name: " & vbNewLine & "Click Close once you are done"
AccountName = InputBox(InputQuestion)
Rng.Value = AccountName
i = i + 1
Loop Until i = 10
End Sub
我需要它按以下顺序进行操作:
我在这里添加了一些未使用的变量和混乱的信息作为个人占位符。Stepthrough的行为似乎与我所需要的差不多,但我知道这是完全混乱的如果我正确理解了您要做的事情,您应该只将
Rng
设置为起始单元格,而不是整个范围。快速修复方法是设置循环外部的初始位置,并通过偏移列使其与i
保持同步
如果在InputBox
中没有从用户处获得值,要允许提前退出,只需检查vbNullString
的返回值即可
我猜你需要更像这样的东西(未经测试):
Set Rng=Sheets(“基本信息”).范围(“I2”)
做
InputQuestion=“请输入银行帐户名:”&vbNewLine&“完成后单击关闭”
AccountName=InputBox(InputQuestion)
如果AccountName vbNullString,则
Rng.Value=AccountName
i=i+1
'按行向下偏移
设置Rng=Rng偏移量(1,0)
'按列右偏移
'设置Rng=Rng偏移量(0,1)
如果结束
循环直到i=10或AccountName=vbNullString
我认为这些问题中的每一个都应该是一个单独的问题。一次回答有点宽泛。您将rng
声明为Range(“I2:I13”)
,但希望写入I3
。为什么I2
是该范围的一部分?为什么I4:I13
是该范围的一部分?把所有这些细胞都挂在这个范围内有什么好处?如果您一直坚持使用rng
,那么您可以引用您想要写入的确切单元格rng.Cells(2).Value=AccountName
,但是,为什么不只使用Sheets(“基本信息”).Range(“I3”).Value=AccountInfo
,这不是更清楚吗?这就是工作。我将Rng.Offset编辑为按行而不是按指定列进行偏移。非常感谢您的帮助:)@Batteredburrito很好地抓住了我的行\列错误,谢谢您的编辑。
Set Rng = Sheets("Essential Info").Range("I2")
Do
InputQuestion = "Please enter in a bank account name: " & vbNewLine & "Click Close once you are done"
AccountName = InputBox(InputQuestion)
If AccountName <> vbNullString Then
Rng.Value = AccountName
i = i + 1
'Offset by Row down
Set Rng = Rng.Offset(1, 0)
'Offset by column right
'Set Rng = Rng.Offset(0, 1)
End If
Loop Until i = 10 Or AccountName = vbNullString