|  | 分類:[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()で解放する事が求められます。
 
 
 |