- ベストアンサー
EXCELの「使われたセル範囲内の最後のセル」について
Excel2000でVBAを使用して開発している物があるのですが、Oracleからデータを受信して内容をシートに表示させています。クリア処理として、受信したデータを消す処理(ClearContents+α)があるのですが、クリアしたにもかかわらず、タイトルの件最後のセル位置(Ctrl+Endキー)が記憶されたままになってしまいます。 試しに、シートの最終行までを削除してみたのですが、やはり記憶されたものは消えません。 そこで、記憶された最後のセルを消す方法がありましたら教えてください。 O/SはWindows98SEです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>最後のセル位置(Ctrl+Endキー)が記憶されたままになってしまいます この意味はよく理解できませんが・・・ 私見では『Ctrl+Endキー』は正常に機能すると思われますが・・・ 質問は、SpecialCells(xlCellTypeLastCell) のことではないのでしょうか。 ClearContents を行っても、SpecialCells(xlCellTypeLastCell) が示すセル位置は、今まで入力した一番下、一番右のセルのままです。 下のコードは、10行目までしか使っていない状態で、6~10行目を削除して、使用した最終セルを表示させるものです。 実行すると『$D$10』が返ってきます。このように最終位置が残っています。 これをクリアするために、ActiveWorkbook.Save を有効にして行うと 『$D$5』が返ってきます。 これからすると、一旦上書き保存すればいいことになります。 上書き保存したくなければ、別名で保存でしょうか。 上書き保存した状態で返る SpecialCells(xlCellTypeLastCell) を得るには、最下段セルから .End(xlUp) をすれば入力最終行はつかめると思います。 ただこれは、コメントを設定したセルや条件付き書式を設定したセルを意識していません。 ご参考に。(当方,Excel2000です) Sub CLS_1() Range("B1:D10") = "NNNNNNN" Rows("6:10").Delete 'ActiveWorkbook.Save MsgBox ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address End Sub
その他の回答 (2)
- wildcard
- ベストアンサー率54% (54/100)
クリアや削除ではなく、空白行(例えば65536行)を削除したい行に貼り付けてみると言うのはどうでしょう? 貼り付けた後に、ファイルを保存すれば、記憶された最後のセルを消す事ができるハズです。
お礼
ありがとうございました。 確かにその方法でも出来ました。 保存することがキーポイントなのですね。
- driverII
- ベストアンサー率27% (248/913)
Excelはそういうもんだと思ってましたが・・・ 最後にセル(A1)を選択する処理を追加したらいかがですか?
お礼
早速の回答ありがとうございます。 ただ、私の聞きたい事とはちょっと違うみたいです。 質問の日本語が足りませんでした・・・確かにそのように受け取れますね。 質問の表現が判らないのでVBAHelpの言葉をそのまま引用してしまったもので。 失礼致しました。
お礼
使われたセル範囲内の最後のセル=Ctrl+End=SpecialCells(xlCellTypeLastCell) のつもりでいました。ExcelのVBAHelpをみたら、SpecialCells(xlCellTypeLastCell)の内容が使われたセル範囲内の最後のセルとなっていて、たまたまなのか、Ctrl+Endと大体一致していたので・・・ それはさておき。 ありがとうございました。出来ました。 削除まではしたのですが、保存しないと認識されないのですね。 この方法で行こうと思います。