繁体   English   中英

提取范围值并分配给字符串变量

[英]Extract a Range Value and assign to a String Variable

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

在下图中,我要存储到字符串变量的值来自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)

现在,我认为我走在正确的道路上,但是我只是找不到这种类型的分配的正确语法或正确参数。

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

当您访问此.Value ...

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

...您将获得一个2D阵列。 这就是您的屏幕截图显示数组索引的原因。

这段代码之所以...

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

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

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

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

请注意,此语法...

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

...提供索引的范围参数,而不是,它返回一个单元格Range ,它具有.Value可以了叫。

您想将(1,1)放在.Value前面:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM