2008-11-02 125 views
7

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

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

+2

问题标题具有误导性。你的输入不是一个整数。 – 2008-11-02 19:37:16

回答

10

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

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

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

我的Excel VBA有点老旧,所以在更新版本的Excel中可能会有更好的方法。

+0

你刚刚打败了我;) – JimmyJ 2008-11-02 19:34:41

0

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

所以,如果你想要把这个说细胞H1,然后使用:

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

4

我建议总是使用已命名范围(如你建议你在做),因为如果任何列或行被添加或删除时,名称引用将更新,而如果您在VBA中硬编码单元格引用(例如,其中一个响应中建议的“H1”),则它不会更新并且将指向错误的单元格。

所以

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

是较安全

Range("H1") = InputBox("....") 

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

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

其中arrResults是至少10行& 3列(并且可以是任何类型的)的阵列。如果你用这个,把这个

Option Base 1 

在VBA模块的顶部,否则VBA将承担数组从0开始,把空白的第一行和列的表。此行使所有数组从默认开始(这在大多数语言中可能不正常,但对电子表格很适用)。

1

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

  1. 用户键入内容并点击确定。这是你期望发生的事情,你将接收到可以直接返回到单元格或声明变量的输入。
  2. 用户点击取消,按压Esc键或点击×(关闭)。返回值是布尔型False。这应该被解释。
  3. 用户确实不是键入任何东西但点击确定不管。返回值是一个零长度的字符串。

如果您将返回值放入一个单元格中,您自己的逻辑流将决定您想要对后两种情况执行什么操作。您可能想要清除单元格,或者您可能想要单独保留单元格内容。以下是如何处理变量类型变量和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可以返回一个公式,单元格范围错误或数组。这些是特殊情况,需要使用非常特定的语法选项。请参阅提供的链接了解更多信息

相关问题