[英]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
数组,其中每个元素都包含一个单元格的基础内容。 如果单元格不包含任何内容或具有导致错误的公式,它也可以返回vbEmpty
或vbError
类型的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.