【发布时间】:2020-04-28 12:55:38
【问题描述】:
我正在努力弄清楚如何使用最终用户将使用 Application.InputBox 输入的值来更新给定单元格中的数字值。我知道代码存在明显的错误,但是因为我是 excel VBA 的新手,所以我的调试技能还不够成熟,我不知道如何修复它们。这是我目前所拥有的:
Sub UpdateLinen()
Dim NewLinen As Integer
Dim InputBoxResult As Integer
Dim ExistingValue As Integer
Dim NewValue As Integer
NewLinen = Application.InputBox(Prompt:="How many new Linen Bandages are being added?", Type:=1)
NewLinen = InputBoxResult
ExistingValue = Range("B4").Value
NewValue = Application.WorksheetFunction.Sum(ExistingValue + InputBoxResult)
Range("B4").Value = NewValue
End Sub
Range("B4") 单元格中已经有一个数字值,这里的想法是最终用户将单击一个按钮(我将在完成后将宏分配给该按钮)并输入一个数字值将被添加到 Range("B4") 中,为该单元格提供一个新的数值。此外,我想编写代码,以便最终用户只需单击按钮宏并输入一个值,就可以根据需要多次返回和更新该单元格中的数字值。
【问题讨论】:
-
NewLinen = InputBoxResult没有意义——它只是用 0 覆盖您刚刚获得的数字。上面的行确实将输入框的值分配给NewLinen。之后你不必做任何事情。另外——Application.InputBox而不是简单的InputBox有什么意义? -
^ 好吧,你必须使用变量
NewLinen,而不是空的InputBoxResult -
@JohnColeman The (Excel Only)
Application.InputBoxmethod 和 the (generic)InputBoxfunction 实际上有很大的不同:例如,只有Application.InputBox有Type参数,它允许您指定“仅数字”、“单元格引用”或“值数组“ -
@Chronocidal 我意识到(我希望用户选择范围时使用它)但 OP 只希望他们输入一个数字。
-
@JvdV 这是
Double在分配给Long变量时返回的Application.InputBox的隐式转换。尝试直接在Application.InputBox的输出上使用TypeName,或者只使用Debug.Print Application.InputBox("Try 5.6",Type:=1)看看它不会自己进行舍入☺InputBox总是输出String,Application.InputBox因Type而不同跨度>