我想提取一个范围值并将其分配给字符串变量。
在下图中,我想要存储到字符串变量的值来自Range("E10:J11").Value(1,1)
,其中包含字符串“Disputes / Appeals”。
我用于实施的代码是:
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)
现在我认为我走在正确的轨道上,但我可能无法找到正确的语法或这种类型的赋值的正确参数。
答案 0 :(得分:1)
Range.Value
返回Variant
(基本上是一个“容器”类型,几乎可以容纳任何东西)。如果Range
中只有一个单元格,则它将包含单元格的基础内容。如果Range
中有多个单元格,则返回Variant
的二维数组,每个元素包含一个单元格的基础内容。如果单元格不包含任何内容或导致错误的公式,它也可以返回Variant
类型vbEmpty
或vbError
。
当您访问此.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
,其中.Value
在 it 上调用。
答案 1 :(得分:0)
您想将(1,1)
放在.Value
:
P3 = Worksheets("NameofmySheet").Range("E10:J11")(1, 1).Value