我正在编写一个快速应用程序 - 第一个项目,但是我试图找到用于将输入字符串的结果写入Excel中的命名单元格的VBA代码。VBA Excel宏将输入整数写入单元格
例如,一个输入框提出问题“您想要将哪个工作号码添加到列表中?”......然后用户将输入参考号码,例如“FX1234356”。宏然后需要将这些信息写入一个单元格中,然后我可以使用它来完成宏(基本上是在某些数据中进行搜索)。
我正在编写一个快速应用程序 - 第一个项目,但是我试图找到用于将输入字符串的结果写入Excel中的命名单元格的VBA代码。VBA Excel宏将输入整数写入单元格
例如,一个输入框提出问题“您想要将哪个工作号码添加到列表中?”......然后用户将输入参考号码,例如“FX1234356”。宏然后需要将这些信息写入一个单元格中,然后我可以使用它来完成宏(基本上是在某些数据中进行搜索)。
您可以使用VBA中的Range对象设置命名单元格的值,就像任何其他单元格一样。
Range("C1").Value = Inputbox("Which job number would you like to add to the list?)
其中“C1”是要更新的单元格的名称。
我的Excel VBA有点老旧,所以在更新版本的Excel中可能会有更好的方法。
你刚刚打败了我;) – JimmyJ 2008-11-02 19:34:41
我用一个包含TextBox的表单完成了这种事情。
所以,如果你想要把这个说细胞H1
,然后使用:
ActiveSheet.Range("H1").Value = txtBoxName.Text
我建议总是使用已命名范围(如你建议你在做),因为如果任何列或行被添加或删除时,名称引用将更新,而如果您在VBA中硬编码单元格引用(例如,其中一个响应中建议的“H1”),则它不会更新并且将指向错误的单元格。
所以
Range("RefNo") = InputBox("....")
是较安全
Range("H1") = InputBox("....")
您可以设置多个单元格的值了。
Range("Results").Resize(10,3) = arrResults()
其中arrResults是至少10行& 3列(并且可以是任何类型的)的阵列。如果你用这个,把这个
Option Base 1
在VBA模块的顶部,否则VBA将承担数组从0开始,把空白的第一行和列的表。此行使所有数组从默认开始(这在大多数语言中可能不正常,但对电子表格很适用)。
当要求用户使用InputBox method放入单元格的响应时,通常会发生三件事情可能发生¹。
如果您将返回值放入一个单元格中,您自己的逻辑流将决定您想要对后两种情况执行什么操作。您可能想要清除单元格,或者您可能想要单独保留单元格内容。以下是如何处理变量类型变量和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可以返回一个公式,单元格范围错误或数组。这些是特殊情况,需要使用非常特定的语法选项。请参阅提供的链接了解更多信息
问题标题具有误导性。你的输入不是一个整数。 – 2008-11-02 19:37:16