在数组中查找存储的范围值的列编号



我通过以下代码在数组中存储了一系列单元格:

MyArr()=sheet1.range(x1:y1)

X和y发生变化。我对数组没有问题,它工作得很好。

通过循环,我读取数组值,如果假设一个值是"0";样品";,那么我需要在固定的行和列中找到一个单元格的值;样品";。

我找不到存储区域的列号或行号。

当我键入MyArr(1,n(时,它会返回值,但当我尝试MyArr(1,n)时。列获取该值的列编号,它的行为不像对象,并给出错误。n是相关的数组索引号。

当我在数组中存储一个范围时,如何获取该存储范围值的行或列编号?

执行MyArr() = MyRange时,您正在编写一个Let语句,它将表达式中的值分配给变量。MyRange访问其默认成员MyRange.Value。由于它是一个多单元格范围,因此它会创建一个Variant值数组,这些值将保存到MyArr中。

这是一个很长的路要走,你不是把一个范围放入一个数组,你是把范围的值放入一个阵列。因此,一旦在MyArr中有了值,这些元素就没有像Range.RowRange.Column这样的成员,因为它们不是对象,只是值。

如果你想将范围保存为一个对象,你可以进行

Dim MyRange As Range
Set MyRange = Sheet1.Range("x1:y1")

如果您需要访问MyRange中的值,您可以执行MyRange.Cells(1,1).ValueMyRange.Value()(1,1),这与您在MyArr中的操作相同。

但由于它保存在范围对象中,因此您可以访问范围对象的所有对象成员。例如,您可以找到行和列—MyRange.Cells(1,1).RowMyRange.Cells(1,1).Column。或者,您可以在同一行中找到其他值,如MyRange.Cells(1,1).EntireRow.Cells(5)

最新更新