我的问题如下:我有一个Excel数据库的前端,包含材料数据。我有一个SQL查询来调出数据库中的x-y数据。例如这可能是一个应力 - 应变曲线。VBA中的范围集合
我想将这些数据显示为单独的曲线。由于所有测试的x和y数据现在分成两列,一列为x,另一列为y,我需要将它们分开。我不想为此打开一个新的工作表,所以我决定做两个范围集合。一个集合将保存所有x范围,一个集合将保存所有y范围。
所以不同的曲线在彼此之下。我有一个代码分裂他们,并使范围。我95%确定分割工作的代码,但问题是集合中的项目现在不能作为我的输入来访问。这里的代码,这样就可以使自己到底是怎么回事
Sub Split()
Dim X As New Collection, Y As New Collection
Dim tbl As ListObject
Dim cell As Range, rng As Range, xrng As Range, yrng As Range
Dim U As Range, L As Range ' upper and lower boundary of each x and y range
Dim i As Integer
Set tbl = Data.ListObjects(1)
Set cell = tbl.ListColumns(35).DataBodyRange(1, 1)
Do While Not (IsEmpty(cell))
Set U = cell
Set L = cell
Do While (L.Value < L.Offset(1, 0).Value) And (Not (IsEmpty(L.Offset(1, 0))))
Set L = L.Offset(1, 0)
Loop
Set xrng = Range(U, L)
Set yrng = Range(U.Offset(0, 1), L.Offset(0, 1))
X.Add (xrng)
Y.Add (yrng)
' move one down
Set U = L.Offset(1, 0)
Set cell = U
Loop
Debug.Print xrng.Select ' returns TRUE
Debug.Print X.Item(X.Count).Select ' Error Object needed
End Sub
代码的简短描述的画面:通过与x和y数据的ListObject去。为每个x范围和y范围定义一个U(pper)和L(ower)边界单元格。如果X的值下降,这是来自下一个范围的x,因为x在x y数据中总是按照升序排列。然后保存范围并将U(pper)边界和循环单元向下移动到x和y的下一个范围。
X.item(1)
不返回类型范围,而是变体。我怎样才能使它成为一个范围对象。换句话说,有没有一种方法可以将范围对象保存在其他没有预定义长度的对象中(排除数组)呢?
虽然这是真的,但这不是问题。我确定该范围是指rigth工作表。问题是,如果你使用圆括号,范围将得到评估,它会返回我认为的变体类型。如果括号忽略,集合将添加一个范围类型。我的回答如下,它的工作原理是这样的。 –