提取范围值并分配给一个stringvariables

我想提取一个范围值并将其分配给一个stringvariables。

在下面的图片中,我想存储到一个stringvariables的值是从Range("E10:J11").Value(1,1)持有string“Disputes / Appeals”。

范围值

我用于实现的代码是:

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

有这个错误,我知道我需要具体的.Value的参数,以便我的分配将同意相同的数据types。

根据图像,遵循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) 

现在我想我正走在正确的轨道上,但是我不能找出正确的语法或者这种types赋值的正确参数。

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

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

Range.Value返回一个Variant (基本上是一个“容器”types,可以容纳任何东西)。 如果Range只有一个单元格,它将包含单元格的基础内容。 如果Range有多个单元格,则返回Variant二维数组,每个元素包含一个单元格的基础内容。 如果单元格不包含任何内容或者导致错误的公式,它也可以返回types为vbEmptyvbErrorVariant

当你访问这个.Value

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

…你得到一个二维数组。 这就是为什么你的屏幕截图显示数组索引。

这个代码之所以…

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

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

尽pipe其他答案显示了获取目标单元格值的不同方法,但要使用属性return / array索引语法将索引应用于.Value的返回值,您需要明确地向.Value提供一个空的参数列表:

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

请注意,这个语法…

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

…提供Range参数的索引,而返回一个单元格Range ,其中调用了.Value