我的問題如下:我有一個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工作表。問題是,如果你使用圓括號,範圍將得到評估,它會返回我認爲的變體類型。如果括號忽略,集合將添加一個範圍類型。我的回答如下,它的工作原理是這樣的。 –