【问题标题】:When asking for a Range input : object variable or with block variable not set in excel vba当要求输入范围时:对象变量或未在 excel vba 中设置块变量
【发布时间】:2013-04-25 13:10:34
【问题描述】:

我希望用户输入单元格范围

Dim FromRang, ToRang As Range

'Ask the user to input the cell Range in which to search for the sub strings
FromRang = Application.InputBox(Prompt:="Enter Search Range From:", Type:=8)
ToRang = Application.InputBox(Prompt:="Enter Search Range To:", Type:=8)

但这给了我一个错误:“对象变量或块变量未在 excel vba 中设置”

【问题讨论】:

  • 设置 FromRang = input.
  • 我可能会声明两个字符串变量并捕获用户输入的文本作为 Range 参数。有一些控件可用于返回范围对象,但我不认为 InputBox 是其中之一。
  • @mehow 你能说清楚一点。我是 excel vba 的新手。
  • 见我的评论:Set FromRang = Application.InputBox...etc
  • 请注意Dim FromRang, ToRang As Range 仅将ToRang 声明为RangeFromRang 默认声明为 Variant。要将它们都声明为范围,请执行以下操作:Dim FromRang as Range, ToRang As Range。看看this。向下滚动到“注意使用 One Dim 语句声明的变量。”

标签: excel vba


【解决方案1】:

Range 等对象只能在 VBA 中使用 Set 进行赋值。因此,正如我所说,您应该使用:

Set FromRang = Application.InputBox(Prompt:="Enter Search Range From:", Type:=8)

此外,对多个变量进行标注需要您分别声明每个变量的类型:

Dim FromRang As Range, ToRang As Range

否则第一个将是未指定的,默认情况下这会导致它变为Variant 类型,这可能会导致不良行为。

【讨论】:

  • +1。与常规 VB InputBox 函数相比,我不知道 Application.InputBoxType 参数。谢谢。
  • FromRang 声明为Variant 会更准确。
  • @DougGlancy 我怀疑这样做,让我改进一下
猜你喜欢
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多