私の問題は、次のとおりです。私は、Oracleデータベースの中に物質データを持つExcelフロントエンドを持っています。私はデータベースにx-yデータを表示するSQLクエリを持っています。例えば、これは応力 - 歪み曲線である可能性がある。VBAの範囲のコレクション
このデータを個別のカーブとして表示したいとします。すべてのテストのxとyのデータはxとyの2つの列になっているので、それらを分割する必要があります。私はこのために新しいワークシートを開きたくないので、私は2つの範囲のコレクションを作ることにしました。 1つのコレクションはすべてのx範囲を保持し、1つはすべてのy範囲を保持します。
したがって、異なる曲線は互いに下にあります。私はそれらを分割して範囲を作るコードを持っています。私は95%のコードを分割していることを確認していますが、問題はコレクションのアイテムが現在私からintendetとしてアクセスできないということです。あなた自身
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 yのデータで常に昇順になっているため、これは次の範囲からのxです。その後、範囲を保存し、U(pper)境界線とループセルをxとyの次の範囲に移動します。
X.item(1)
は、型の範囲を返しません。どのようにレンジオブジェクトにすることができますか?または、他の言葉では、距離オブジェクトを他のオブジェクトに保存する方法があります。
これは本当ですが、これは問題ではありませんでした。私は範囲が厳格なワークシートを参照していたことを確認しました。問題は、括弧を使用すると範囲が評価され、バリアント型が返ってくると思います。カッコを無視すると、コレクションに範囲タイプが追加されます。私の答えは以下の通りで、このように動作します。 –