【问题标题】:Writing an input integer into a cell将输入整数写入单元格
【发布时间】:2010-09-20 09:51:16
【问题描述】:

我自己正在编写一个快速应用程序 - 第一个项目,但是我正在尝试找到 VBA 代码,用于将输入字符串的结果写入 Excel 中的命名单元格。

例如,输入框询问“您想将哪个作业编号添加到列表中?”...然后用户将输入参考编号,例如“FX1234356”。然后宏需要将该信息写入一个单元格,然后我可以使用它来完成宏(基本上是在某些数据中搜索)。

【问题讨论】:

  • 问题标题具有误导性。您的输入不是整数。

标签: excel vba


【解决方案1】:

您可以使用 VBA 中的 Range 对象来设置命名单元格的值,就像任何其他单元格一样。

Range("C1").Value = Inputbox("Which job number would you like to add to the list?)

其中“C1”是您要更新的单元格的名称。

我的 Excel VBA 有点老旧,所以在新版本的 Excel 中可能有更好的方法来做到这一点。

【讨论】:

  • 感谢您为我验证。我讨厌发布旧代码并且可能有人进来说“是的,早在 1900 年代你可能已经这样做了,但现在......”。 :)
【解决方案2】:

我建议始终使用命名范围(正如您建议的那样),因为如果添加或删除任何列或行,名称引用将更新,而如果您硬编码单元格引用(例如“H1”为在 VBA 中的一个响应中建议),那么它将不会更新并指向错误的单元格。

所以

Range("RefNo") = InputBox("....") 

更安全
Range("H1") = InputBox("....") 

您也可以设置多个单元格的值。

Range("Results").Resize(10,3) = arrResults()

其中 arrResults 是一个至少有 10 行和 3 列的数组(可以是任何类型)。如果你用这个,就把这个

Option Base 1

在 VBA 模块的顶部,否则 VBA 将假定数组从 0 开始,并在工作表中放置空白的第一行和列。此行使所有数组默认从 1 开始(这在大多数语言中可能不正常,但适用于电子表格)。

【讨论】:

    【解决方案3】:

    当要求用户使用InputBox method 将响应放入单元格时,通常会发生三件事¹。

    1. 用户输入内容并单击确定。这是您期望发生的事情,您将收到可以直接返回到单元格或声明的变量的输入。
    2. 用户点击Cancel,按Esc或点击×(关闭)。返回值是一个布尔值 False。应该考虑到这一点。
    3. 用户确实没有输入任何内容,但无论如何都单击OK。返回值是一个长度为零的字符串。

    如果您将返回值放入单元格中,您自己的逻辑流将决定您想对后两种情况执行什么操作。您可能想要清除单元格,或者您可能想要单独保留单元格内容。以下是使用变体类型变量和Select Case statement 处理各种结果的方法。

        Dim returnVal As Variant
    
        returnVal = InputBox(Prompt:="Type a value:", Title:="Test Data")
    
        'if the user clicked Cancel, Close or Esc the False
        'is translated to the variant as a vbNullString
        Select Case True
            Case Len(returnVal) = 0
                'no value but user clicked OK - clear the target cell
                Range("A2").ClearContents
            Case Else
                'returned a value with OK, save it
                Range("A2") = returnVal
        End Select
    

    ¹ 当使用特定类型的 InputBox method 时,还有第四种情况。 InputBox 可以返回公式、单元格范围错误或数组。这些是特殊情况,需要使用非常具体的语法选项。有关更多信息,请参阅提供的链接。

    【讨论】:

      【解决方案4】:

      我已经用一个包含 TextBox 的表单完成了这种事情。

      因此,如果您想将其放入单元格 H1,请使用:

      ActiveSheet.Range("H1").Value = txtBoxName.Text

      【讨论】:

        猜你喜欢
        • 2014-07-24
        • 2014-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-11
        相关资源
        最近更新 更多