VBA Excelmacros将input整数写入单元格

我自己写一个快速的应用程序 – 第一个项目,但是我试图findVBA代码写入到Excel中的命名单元格的inputstring的结果。

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

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

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

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

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

我build议总是使用命名范围(因为你build议你这样做),因为如果任何列或行被添加或删除,名称引用将更新,而如果你硬编码单元格引用(例如“H1”的答案)在VBA,那么它不会更新,并将指向错误的单元格。

所以

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

比…更安全

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

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

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

其中arrResults是至less10行和3列的数组(可以是任何types)。 如果你使用这个,把这个

 Option Base 1 

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

当要求用户使用InputBox方法将一个响应放入单元格时,通常有三件事情可能发生¹。

  1. 用户键入内容并单击确定 。 这是你期望发生的事情,你将接收到可以直接返回到单元格或声明的variables的input。
  2. 用户点击取消 ,按Esc或点击× (closures)。 返回值是一个布尔值False 。 这应该被解释。
  3. 用户不input任何内容,而是单击确定 。 返回值是一个零长度的string。

如果您将返回值放入单元格中,则您自己的逻辑stream将决定您要对后两种情况执行什么操作。 您可能想要清除单元格,或者您可能想要单独保留单元格内容。 以下是如何处理variablestypesvariables和Select Case语句的各种结果。

  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 

¹ 使用特定types的InputBox方法时有第四种情况。 一个InputBox可以返回一个公式,单元格范围错误或数组。 这些都是特殊情况,需要使用非常特定的语法选项。 查看更多的提供的链接。

我用一个包含TextBox的表单做了这样的事情。

所以,如果你想把这个说H1单元格,然后使用:

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