【问题标题】:Updating values in cells更新单元格中的值
【发布时间】: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.InputBox methodthe (generic) InputBox function 实际上有很大的不同:例如,只有 Application.InputBoxType 参数,它允许您指定“仅数字”、“单元格引用”或“值数组“
  • @Chronocidal 我意识到(我希望用户选择范围时使用它)但 OP 只希望他们输入一个数字。
  • @JvdV 这是 Double 在分配给 Long 变量时返回的 Application.InputBox 的隐式转换。尝试直接在Application.InputBox 的输出上使用TypeName,或者只使用Debug.Print Application.InputBox("Try 5.6",Type:=1) 看看它不会自己进行舍入☺InputBox 总是输出StringApplication.InputBoxType 而不同跨度>

标签: excel vba inputbox


【解决方案1】:

这里有几个cmets:

  • 宁可使用Long 数据类型值而不是Integer(防止溢出问题的好习惯)
  • 您不需要在此处添加WorksheetFunction.Sum 来添加这些值
  • 您正在使用NewLinen = InputBoxResult 直接覆盖用户的输入
  • 我知道你说过会有一个按钮,但我喜欢养成至少一个明确的工作表引用的习惯。
  • 此外,多行写出逻辑并没有错,但这个操作真的没有什么花哨和困难的,那为什么不写成一行呢?

我可以推荐类似的东西吗:

Sub UpdateLinen()

Dim NewLinen As Long
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Blad1")

NewLinen = Application.InputBox(Prompt:="How many new Linen Bandages are being added?", Type:=1)
ws.Range("B4") = ws.Range("B4") + NewLinen

End Sub

【讨论】:

  • @Sidge,这对你有帮助吗?
猜你喜欢
  • 2012-09-24
  • 2013-10-08
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多