|
分類:[VB.NET]
> Rangeオブジェクトは範囲自体を単位としていますので、含まれるセルを列挙できません。 実は VBA レベルでは、 Set X = Sheet1.Range("B2:D4") For Each Y In X ' In X.Cells でも可 i = i + 1 Y.Value = i Next のような事ができたりします。(^^;
ただ、VB.NET からの呼び出しだと、レイトバインドかアーリバインドかに よって列挙できない場合もありますし、また、オブジェクトの解放処理に関する 問題もありますので、For Each するよりも、
> Range.Value = Object型2次元配列で一括代入する方法になるでしょう。
のように、二次元配列を一括代入する方法を採用した方が無難でしょう。
> Cells(Row,Col)プロパティなどで一つ一つ代入するか、 ただし、これは NG 。
Cells は引数を持たないプロパティです。つまり .Cells(Row, Col) というのは、 .Cells._Default(Row, Col) の呼び出しを意味してしまいます。
これではオブジェクトを解放できませんので、Cells を使う場合は、 R1 = .Cells R2 = R1(Row, Col) R2.Value = 〜〜 のようにわけて記述し、あとから、それぞれの変数を Marshal.ReleaseComObject()で解放する事が求められます。
|