[[20090123180738]] 『行削除はオブジェクトがないと出来ないの?』(むずむず) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『行削除はオブジェクトがないと出来ないの?』(むずむず)

 今度は、1日勉強してからの質問です。
 よろしくお願いいたします。

 記録したシートのデータを削除したいのですが、列数の57番から
 削除したいのですが、昨日は500列使用した。(データがある使用した最終行)or(オブジェクトが有る)

 それが、判っていれば
 Rows("57:500").select.ここも不明ーーDeleteなのかClearなのか
 これで、削除することが出来ると思うのですが

 最終に使用した行(500)に入るべき最終行をspecial〜とか色々試したのですがどうしてもエラーが出てしまいます。

 そもそもselectを入れている自体間違いなのでしょうか?

 ちなみに、何も記入されてない行は、エクセルシート上では簡単に削除出来るのに、、
 VBAコードだと、実行時エラー'424':オブジェクトが必要です。なのでしょうか?
 回避する手段はあるのでしょうか?   delete   clear でなりました。
 Sub Clear()
     Rows("72:80").select.clear    72行〜80行は何も無い空白です。
 End Sub
 空白自体(オブジェクトが無い)所も削除の対象にする方法も教えていただけると助かります。

 色々なHPを参考に見すぎてごちゃごちゃになってしまいました。

 よろしくお願いいたします。


 A列の最終行の取得方法
 A65536を選択した状態で
 Ctrl+↑

 これをマクロの自動記録してみてください。
 参考になると思います。

 もう一つ。
 VBAヘルプで
 Endプロパティを調べてみてください。
 (MARBIN)

 Rows("72:80").clear

 又は

 Rows("72:80").delete

 です。

 メソッドはその都度実行されなければなりませんので

 Rows("72:80").select
 selection.clear
 又は selection.delete

 になります。
 ですが,
 Selectしないで、直接 Action(method) を実行した方がエラーを
 防げる確率が高くなります。
 (seiya)


 またまた、(seiya)さん(MARBIN)さん
 ありがとうございます

 (MARBIN)さんの結果
 Selection.End(xlUP).Select
 でました。これが、データがある使用した最終行もしくはセルとかの最終値という所にたとえば、上で、
 Rows("72:Selection.End(xlUP)").select のような形で、、でしょうか?

 (seiya)さんの結果
 何も無いところの削除できました。

 範囲指定がどうしても判りづらくて困ってます。
 たとえば、左上C55セルから、右下 I(最終セル)を指定するには、どのように、記述すればいいのでしょうか?

 よろしくお願いいたします。

 


 Range("C55:I" & Cells(Rows.Count, 9).End(xlUp).Row)
                 ^^^^^^^(1)^^^^^^^^^  ^^^^^(2)^^^^^^
 (1) I列の最終セルを取得し、(2) 上方へxlupで最終使用行の
 行番号を取得。それを C55:I という文字列に & で繋げることで
 例えば C55:I100 のようなセル範囲になり、Range で指定。
 
(純丸)(o^-')b


 ありがとうございます。
 実際この部分は何、この部分は、何を意味しているのとかわからなかったので助かりました。


 実際活用してみた結果。

 Sub clear() 
     Rows("72:80").select
     selection.clear
 End Sub

 これで、空白自体も削除という形で実行できました。

 それで、(純丸)さんの形を導入してみた結果。
 今度は実例で、

 Sub DataAllClear()
     Range("c57:aa" & cells(Rows.Count, 27).End(xlUp).Row).select
     Selection.Clear
 End Sub

 Range を Rows にしても結果は同じでした。
 で、エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。と、出ました。ん〜。
 何が、おかしいのでしょうか?

 また、よろしくお願いいたします。


 ↑そのコードはまったく問題ないです。新しいシート・ブックで試してみて下さい。
 
(純丸)(o^-')b

 出来ました!!
 すみませんでした。

 56行から上データ有り  57行空白  58行からデータ有りなのでした説明不足ですみません。
 ちなみに、HPなどで調べて他の、記述で、
 Range("c59").End(xlDown).CurrentRegion.Clear でも一応出来ました。逆の
 Range("c58").End(xlUp).CurrentRegion.Clearをしても出来ましたが、
 2回してしまったら、消したくないさらに上まで行ってしまったので慌てました。
 なので、上記のでやっています。

 今度は下から30行データ消しなどは、どういう風に記述したらよろしいのでしょうか?
 Range("c59").End(xlDown).CurrentRegion.Clear 一応これを使って、出来ないでしょうか?

 他の記述でも歓迎です。End(xlDown)+30 とか、わけが判らなくなってきました。
 よろしくお願いいたします。


 >[下から3000データ消し]
 については、既にみやほりんさんが
 サンプルコードを載せて居られますが・・・。
[[20090120111724]]『VBAで永遠にデータを残したい』(むずむず)
 今ご覧になれば、参考になると思います。

 最終行を求めたら
 [最終行]と[最終行-30行]の間の行を
 消せばよいのですよね。

 「・・・End(xlDown).Row+30」だと、
 最終行+30の行 と言う事になってしまいます。

 因みに
 >Range("c59").End(xlDown).CurrentRegion.Clear でも一応出来ました。
 と2つ載せて居られますが、二つのコードは違う範囲を消しますよね。。。?

 「CurrentRegion」に関しては
 Ctrl + Shift + 「け(←キーボードのひらがな)」
 (数字キーが有る場合は、 Ctrl + *
  バージョンに依っては、 Ctrl + A)
 のキー操作をマクロの記録にとると、このコードが得られます。
 どのセルがアクティブの時に
 どの範囲が選択されるか、確認してみられても良いかもしれません。

 (HANA)

 これは終了しないの?
 (これのて終了マン)

 終了。の意味わかる?
 もう、返信書いちゃダメって事だよ^^

 終了。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.