Excel:Rangeについて への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 ゆぅ  (社会人)
投稿日時
2009/8/11 22:01:32
Rangeメソッドについて質問です。
VB2005で開発しています。
Rangeの範囲指定方法が間違っているのか最後のセルの値だけ取得できません。
---------------
Dim symbol As Excel.Range = Nothing
Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
symbol = xlSheet.Range("B13:CR13").Find(key)
---------------
keyはFor Eachで廻していて、B13~CR13までのセルはいくつかに結合されています。
CR13より前までのセルのsymbolは取得できています。
なのにCR13だけsymbolがNothingになります。
ただ、symbol = xlSheet.Range("B13:CR13").Find(key)で止めて
ウォッチウインドでxlSheet.Range("CR13").ROWとすると欲しい値が取れています。
どうして最後だけ取得できないのでしょうか?
最後のCR13のsymbolを取得するにはどうしたらよいのでしょうか?
VB2005で開発しています。
Rangeの範囲指定方法が間違っているのか最後のセルの値だけ取得できません。
---------------
Dim symbol As Excel.Range = Nothing
Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
symbol = xlSheet.Range("B13:CR13").Find(key)
---------------
keyはFor Eachで廻していて、B13~CR13までのセルはいくつかに結合されています。
CR13より前までのセルのsymbolは取得できています。
なのにCR13だけsymbolがNothingになります。
ただ、symbol = xlSheet.Range("B13:CR13").Find(key)で止めて
ウォッチウインドでxlSheet.Range("CR13").ROWとすると欲しい値が取れています。
どうして最後だけ取得できないのでしょうか?
最後のCR13のsymbolを取得するにはどうしたらよいのでしょうか?
B13:CR13 というと、13行目の第2列~第96列目に相当しますね。
しかし提示されたコードには、For Each の記述が無いようですが、
実際のコードは、どのようになっているのでしょうか?
> CR13より前までのセルのsymbolは取得できています。
> なのにCR13だけsymbolがNothingになります。
こちらでは再現できませんでした。現象をこちらで追試できるよう、
セルがどのように結合されていて、どのようなデータが入力されていたのか、
また、Find に指定した key の中身が何であるのかを示して頂けないでしょうか。
なお、個々のオブジェクトは、Marshal.ReleaseComObject メソッドを用いて、
使用後に後始末する必要があります。そのため、
のように、個々の Range オブジェクトを変数に受け、それぞれを解放させるようにしてください。
直接「xlSheet.Range("B13:CR13").Find(~)」のように記述してしまうと、中継役となった
B13:CR13 の Range オブジェクトを、明示的に解放させる事ができなくなってしまいます。