vba - Excel VBA:循环输入框并将值添加到单元格范围
问题描述
我有以下代码:
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
我需要它按以下顺序执行的是:
- 单击按钮时打开输入框 - 完成
- 要求用户输入帐户名称 - 完成
- 将帐户名称存储在字符串中 - 完成(AccountName 变量)
- 将 AccountName 写入“基本信息”表中的单元格 I3 -有点工作。它插入到正确的工作表,但将其写入所有单元格 I3:I13,相信它的 Do 循环布局错误
- 将单元格 I3 向下移动,现在它变为 I4 准备好输入下一个名称- 无功能,需要帮助。是否认为我可以将 1 个单元格添加到 Cells(0,0) 变量?
- 只允许细胞上升到 I13 -工作?将此值存储在 i 中并计算每个循环,它不会超调。
- 循环回到步骤 1,直到我达到定义的限制或用户关闭 InputBox -它循环但我相信我所有问题所在的循环
我已将当前未使用的变量和非常混乱的信息添加为个人占位符。Stepthrough 的行为似乎也几乎符合我的需要,但我知道这完全是一团糟
解决方案
如果我正确理解您要做什么,您应该只将 设置Rng
为起始单元格而不是完整范围。快速解决方法是在循环外i
设置初始位置,并通过偏移列保持同步。
如果您在 中没有从用户那里获得值,要允许提前退出InputBox
,只需检查 a 的返回值vbNullString
。
我猜你需要更像这样的东西(未经测试):
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
推荐阅读
- c# - Error 'does not support code parsing or generation...' if moving C# project with a picture for Visual Studio 2019
- flutter - Flutter 可缩放小部件
- c# - Xamarin Xaml 资源样式多条件未使用默认值触发
- pine-script - How to change a text color inside a shape in pine script?
- python-3.x - 如何清除组合框中上一个选定的项目
- azure - Values to configure pagination rules in Rest API connector in azure data factory to get data and load into sql database
- cocoapods - Cocoapods 无法通过 Artifactory 解决
- javascript - 如何在用 React 编写的应用程序中查找内存泄漏
- typescript - 如何在 Loopback4/Typescript 中对 API 密钥进行额外查找后,根据父 ID 强制进行数据过滤
- java - when i put the parameters in JCheckBox it gives error