• ベストアンサー

EXCELの「使われたセル範囲内の最後のセル」について

Excel2000でVBAを使用して開発している物があるのですが、Oracleからデータを受信して内容をシートに表示させています。クリア処理として、受信したデータを消す処理(ClearContents+α)があるのですが、クリアしたにもかかわらず、タイトルの件最後のセル位置(Ctrl+Endキー)が記憶されたままになってしまいます。 試しに、シートの最終行までを削除してみたのですが、やはり記憶されたものは消えません。 そこで、記憶された最後のセルを消す方法がありましたら教えてください。 O/SはWindows98SEです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

wtnb_h
質問者

お礼

使われたセル範囲内の最後のセル=Ctrl+End=SpecialCells(xlCellTypeLastCell) のつもりでいました。ExcelのVBAHelpをみたら、SpecialCells(xlCellTypeLastCell)の内容が使われたセル範囲内の最後のセルとなっていて、たまたまなのか、Ctrl+Endと大体一致していたので・・・ それはさておき。 ありがとうございました。出来ました。 削除まではしたのですが、保存しないと認識されないのですね。 この方法で行こうと思います。

その他の回答 (2)

  • wildcard
  • ベストアンサー率54% (54/100)
回答No.2

クリアや削除ではなく、空白行(例えば65536行)を削除したい行に貼り付けてみると言うのはどうでしょう? 貼り付けた後に、ファイルを保存すれば、記憶された最後のセルを消す事ができるハズです。

wtnb_h
質問者

お礼

ありがとうございました。 確かにその方法でも出来ました。 保存することがキーポイントなのですね。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

Excelはそういうもんだと思ってましたが・・・ 最後にセル(A1)を選択する処理を追加したらいかがですか?

wtnb_h
質問者

お礼

早速の回答ありがとうございます。 ただ、私の聞きたい事とはちょっと違うみたいです。 質問の日本語が足りませんでした・・・確かにそのように受け取れますね。 質問の表現が判らないのでVBAHelpの言葉をそのまま引用してしまったもので。 失礼致しました。

関連するQ&A

  • エクセル2003、範囲指定のことで

    エクセルあるシートのA1~L1に項目名が設定してあります。 他の時に使用したシートをコピーして項目名を利用してA2 からは再入力して使っていこうと考えています。 A2セルにカーソルを置いて、Ctrl+ShiftとEndを押して旧の データーが入っている部分を指定し編集→クリヤー→すべてで クリヤーします。 ところが、再度A2セルにカーソルを置き再びCtrl+ShiftとEnd を押すとまた同じ範囲が指定されてしまいます。 何故でしょう? どなたか教えてください。 宜しくお願いします。

  • エクセルで不要なセルが削除できません。

    お世話になります。 XPでExcel97です。文字だけのデータを引き継いだのですが、容量がとても大きい(3.5MB)ので調べたところ、A1からN100のセルまでしか入力されていないのに、Ctrl+EndでN2954のセルに飛びます。 不要な行を削除しても変わりません。同様のシートが40ほどあります。 原因と対策を教えてください。よろしくお願いします。

  • アクティブでない複数のシートのセルのコンテンツを一度でクリアしたい

    エクセルVBAで、アクティブでない複数のシートの所定のセルのコンテンツを一度でクリアしたいのですが、 現在アクティブではないシートをアクティブにしないでclearcontentsするとアプリ定義、オブジェクト定義エラーになってしまいます。 それぞれのシートをアクティブにしないとclearcontentsできないのでしょうか? どなたか教えてください。よろしくお願いします。 ------------------------------------------------------------------------------- Sub CLEAR_CONTENTS() Sheets(\"1\").Range(Cells(6, 3), Cells(6, 8)).ClearContents Sheets(\"2\").Range(Cells(6, 3), Cells(6, 8)).ClearContents Sheets(\"3\").Range(Cells(6, 3), Cells(6, 7)).ClearContents End Sub

  • Excel VBA セルの選択と消去

    ご覧いただき、ありがとうございます。 最近、会社のPCでExcelでのVBAプログラミングの練習をしています。 先頭ページにボタンをつけて、マクロを設定していますが、以下の動作が どうしてもできません。  ・別シート(WORKとしておきます)にある表のデータをクリアしたい ・クリアしたいのは、WORKシートのA5、B5セル以下のデータが入力されている個所すべて  ・以下のプログラムを書いてみたが、エラーになる    WorkSheets("WORK").Range("A5:B5", Range("A5:B5").End(x|down)). ClearContents 上記の構文に問題があるのはメッセージから分かるのですが、何が悪いのかが分かりません。  WORKシートをSelecしてセルをSelect、Selection.ClearContentsだと上手くいくのですが、画面のちらつきが気になるので、できるならば、先頭ページから遷移せずに実行させたいです。  現在、自宅のPCから質問を入力しているので、会社PCに書いていたプログラミングとは違うかもしれません。  もし、ヒントだけでもお分かりになる方がいらっしゃいましたら、ご教授いただければと思います。

  • エクセル セル範囲にデータが記入されているかを知りたい

    いつもお世話になります。 エクセル2000を使用しています。 「セル範囲のA2~B20に、データが含まれているセルが一つもない場合は、処理を実行しない。一つでも存在する場合は以下の処理をする」 というマクロを書こうとしているのですが 「セル範囲のA2~B20に、データが含まれているセルが一つもない」、「一つでも存在する」 という意味の式の書き方が分かりません。 お手数ですが、教えていただけますでしょうか。 また、現在はエクセルのVBA入門書程度のもの("できるEXCEL2000 マクロ&VBA編")しか手元にないのですが、このようなことが分かりやすく理解できる書籍などをお知りでしたら、教えていただけますでしょうか。

  • EXCEL VBA 結合したセルの制御

    いつもお世話になっております。 Excelで、VBAを使っているのですが、結合されたセルの値を Cells(Row,Column).ClearContents を使ってクリアしようとするとエラーになってしまいます。 結合されたセルには、Cells()のメソッドは処理不能なのでしょうか? どなたかご存知の方がいらっしゃいましたら教えてください。

  • Excel VBA 数式を参照範囲分コピーする方法

    作業環境は以下の通りで、Excelの知識は初心者です。 OS:Windws7 / 使用ソフト:Excel2003 商品.xlsには3つのシートが存在します。 シートはそれぞれ、1行目は見出し行としています。 ・商品データが入った「生データ」シート ・「生データ」シートから必要な情報を参照や加工する数式がA2~AG2に入った「詳細」シート ・「生データ」シートから必要な情報を参照や加工する数式がA2~G2入った「カテゴリ」シート。 「詳細」「カテゴリ」共に数式の入った行を「生データ」の数(行)に合わせて、オートフィルコピーし、最終的にcsvファイルを作成します。 他に、商品.xlsと同じ作りのファイルが複数あり、それらは「生データ」の行数がバラバラの為、VBAで処理したく検索したところ以下のページを発見しました。 http://www.excel.studio-kazu.jp/kw/20110513073632.html VBAは初心者の為、このVBAの意味を検索しながら以下の様に理解して修正したのですが、思うように処理できずにいます。 何が違っているか教えて頂けないでしょうか。 また、できれば数式だけが入ったファイルを雛形として用意し、 生データだけのファイルは別に持ち、処理する形が望ましいのですが VBAで可能な事なのでしょうか? lasとは、生データの最後尾を定義 詳細のA1~AG2セルから1つ下のセルの値を消去し、2行目をコピーし 生データの2行目~最後尾までの行分の数式を貼り付ける カテゴリにも同じ処理を与える Sub データ抽出() Dim las As Long las = Sheets("生データ").Range("A" & Rows.Count).End(xlUp).Row With Sheets("詳細") .Range("A1").CurrentRegion.Offset(1).ClearContents .Range("2:2").Copy .Range("2:" & las).PasteSpecial xlFormulas End With With Sheets("カテゴリ") .Range("A1").CurrentRegion.Offset(1).ClearContents .Range("2:2").Copy .Range("2:" & las).PasteSpecial xlFormulas End With End Sub

  • Excelで、"最後のセル"を修正するときに、「削除する行か列に何かデータが入っているのではないか」

    Excelで、「データの入っている"最後のセル"」を知りたいのですが、どうすればよいのでしょうか。 単なる "最後のセル"なら、コントロールキー+Endで行けます。 今、Excelのシートのセルに、データ(ただの言葉)が入っています。 データの入っているセルは、目で見たところでは、A1からD1480までの長方形の範囲内です。 しかし、コントロールキー+End で行く "最後のセル"は、AA1498(D1480より右下のほう)です。 「A1からD1480までの長方形の範囲」よりも右や下に、なんらかの設定があるからだと思われます。 最後のセルを自分の期待しているD1480に直すには、その余計な部分の行と列を削除して上書き保存すればよいようです(★)。 しかし、「余計な部分だと自分の思ったところに、ひょっとしたら何かデータが入っているのではないか」という心配はどうすれば拭い去ることができるのでしょうか。 Excelのバージョンは2000です。 ★は、以下のページによります。 http://support.microsoft.com/default.aspx?scid=kb;ja;405492 http://www2.odn.ne.jp/excel/waza/cell.html#SEC13

  • Excelの最後のセルの変更方法について

    Excelで大きなデータを編集した後で後半のデータを削除した場合、最後のセルとしては大きなデータのときの最後のセルの情報が残っているようで、ctl+Endではデータがないセルに飛んで行ってしまうのですが、有効なデータの末尾のセルを最後のセルに設定する方法を教えてください。

  • Excel 特定セルのデータを一括消去

    こんにちは。 以前同じ質問をさせていただいたのですが、 しばらくネット環境から離れていたため、再度質問下さい。 車両別に毎日の日報データを入力するシートがあるのですが、 入力作業をするのがExcel初心者の人なので、関数が入っているセルを、 上書き・消去しないよう保護をかけて入力可能なシートのみ選択・入力できるようにしてあります。 1ヶ月ごとに入力したデータを消去し、新たなデータを入力していくのですが、 ロックされていないセルのデータだけを一括で消去出来るマクロがないかと探していましたが、過去ログで、 Sub Cellsdel() Dim c As Range For Each c In Sheets("Sheet1").Range("A5:D10") If c.Locked = False Then c.ClearContents 'c.Clear '書式も含めて、全て消すならこれ一行 End If Next End Sub というマクロを見つけたのでカスタマイズして試してみましたが、 実行時エラー1004 結合されたセルの一部を変更することは出来ません となってしまいました。 以前の質問させて頂いたときに、以下の変更箇所を教えていただいたので、 c.ClearContents ↓ c = "" こちらを試してみたのですが、計算式が多いのと、別シートへ反映させているためか、 ループ状態になってしまい、いくら待っても処理が終わってくれません。 再計算に時間がかかっているのでしょうか? こういった場合は、マクロを組みなおしたほうがいいのでしょうか? 入力するシートはC4:Z100までが1台分、以下、Z1200まで12台分の車両別に分かれていて、 入力するセルは飛び飛びになっています。 この説明では不足していると思いますが、補足をいたしますので、 どなたかご教授頂けないでしょうか? マクロはまだ初心者で色々と勉強している最中です。 よろしくお願いいたします。

専門家に質問してみよう