【问题标题】:Extract a Range Value and assign to a String Variable提取范围值并分配给字符串变量
【发布时间】:2016-09-15 23:34:37
【问题描述】:

我想提取一个范围值并将其分配给一个字符串变量。

在下图中,我想存储到字符串变量的值来自Range("E10:J11").Value(1,1),它包含字符串“Disputes/Appeals”。

Range values

我用于实现的代码是:

Dim P3 As String

'This line gives me Run-time error '13'
'Type mismatch
P3 = Worksheets("NameofmySheet").Range("E10:J11").Value

遇到此错误,我知道我需要特定于 .Value 的参数,以便我的分配同意相同的数据类型。

根据图片,遵循Range("E10:J11").Value(1,1) 规范,这是我所做的:

'This line gives me Run-Time error '450'
'Wrong number of arguments or invalid property assignment
P3 = Worksheets("NameofmySheet").Range("E10:J11").Value(1, 1)

现在我认为我走在了正确的轨道上,但我无法为这种类型的赋值找到正确的语法或正确的参数。

【问题讨论】:

  • P3 = Worksheets("NameofmySheet").Range("E10:J11").Cells(1).Value
  • 嗨@Tim,这个解决方案有效。谢谢。

标签: excel validation excel-2010 vba


【解决方案1】:

Range.Value 返回一个Variant(它基本上是一个可以容纳几乎任何东西的“容器”类型)。如果Range 中只有一个单元格,它将包含该单元格的底层内容。如果Range 中有多个单元格,则返回Variant 的二维数组,每个元素包含一个单元格的基础内容。如果单元格不包含任何内容或包含导致错误的公式,它还可以返回 vbEmptyvbError 类型的 Variant

当您访问此.Value...

Worksheets("NameofmySheet").Range("E10:J11").Value

...你得到一个二维数组。这就是您的屏幕截图显示数组索引的原因。

这个代码的原因...

P3 = Worksheets("NameofmySheet").Range("E10:J11").Value(1, 1)

...不起作用,.Value 实际上是一个带有可选RangeValueDataType 参数的索引属性。所以编译器解释了(1, 1)这个索引。由于您传递了 2 个“参数”,因此您会收到“错误数量的参数”错误。

虽然其他答案显示了获取目标单元格值的不同方法,但为了使用属性返回/数组索引语法将索引应用于.Value 的返回值,您需要显式提供一个空参数列表以.Value:

P3 = Worksheets("NameofmySheet").Range("E10:J11").Value()(1, 1)
                                                      '^^

注意,这个语法...

P3 = Worksheets("NameofmySheet").Range("E10:J11")(1, 1).Value

...改为提供 Range 参数的索引,该参数返回一个单元格 Range,其中在 it 上调用了 .Value

【讨论】:

  • 感谢您的回答并进一步解释Range.Value 的工作原理,非常感谢。我确实合并了我选择的范围内的所有单元格,所以最后它是一个单单元格范围,但我会记住你关于范围如何也包含二维数组的课程。 P3 = Worksheets("NameofmySheet").Range("E10:J11").Value()(1, 1) 也可以完美运行。
【解决方案2】:

你想把(1,1)放在.Value前面:

P3 = Worksheets("NameofmySheet").Range("E10:J11")(1, 1).Value

【讨论】:

  • 这个解决方案也可以@Scott。我从来没有想过将(1,1) 放在.Value 之前。谢谢你。我只是想知道为什么我找不到这两种解决方案的任何示例,我将范围内的字符串值分配给变量字符串的意图似乎是一件普遍的事情。
猜你喜欢
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
相关资源
最近更新 更多