- 締切済み
エクセルマクロについて教えてください。
シート1のA列に、「AAA」という文字列が0~1個あります。 0個の場合は何もせず、1個の場合は 「AAA」以降の行を削除するという動きをマクロにしたいのですが 上手くいきません。 ご指導いただけないでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- tamiemon96
- ベストアンサー率49% (658/1341)
AAA から 下 全部要らないんでしょ。 マクロなくても AAA 検索して そこから下、全部行削除できますよ。
- keithin
- ベストアンサー率66% (5278/7941)
方法1:答えだけ教えてクレな場合 sub macro1() dim h1 as range dim h2 as range set h1 = range("A:A").find(what:="AAA") if h1 is nothing then msgbox "NOT FOUND" exit sub end if set h2 = range("A65536").end(xlup) range(h1, h2).entirerow.delete shift:=xlshiftup end sub 方法2:ジブンでやってみたい場合 A1を選ぶ 新しいマクロの記録を開始する AAAを検索する シフトキーを押しながらCtrl+Endを押す 編集メニューから削除で行全体の削除を行う (Excel2007以降を使っているときはホームタブの削除▼から行を削除する) 記録できたマクロを次のように編集する Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2011/10/6 ユーザー名 : keithin ' ' if application.worksheetfunction.countif(range("A:A"), "AAA") = 0 then exit sub Cells.Find(What:="AAA", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False).Activate Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.EntireRow.Delete End Sub
- mu2011
- ベストアンサー率38% (1910/4994)
行削除は、RowS(開始行:終了行).Deleteを使用しては如何でしょうか。 サンプルコード AAAを含む行から最終行まで削除 Set a = Range("a:a").Find("AAA") If a Is Nothing Then Exit Sub Rows(a.Row & ":" & Cells(Rows.Count, "A").End(xlUp).Row).Delete
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
「上手くいかない」は駄目。回答者はエスパーじゃない。 どう書いて、どうなったのか。エラーメッセージは出たのか。出たならそれも書く。出ないで想定と違う動作をするのであれば、どういう動作をしたのかを書く。 あと、プログラムは「書かれたとおりに動く」ものであって「書いた人の希望通りに動く」ものではない。 以上、どれも基本ですから覚えておいてください。 …というか順番に値を判定してもしAAAならそこから下を削除するだけだよね…?
- kuma56
- ベストアンサー率31% (1423/4527)
>・・・・・・という動きをマクロにしたいのですが上手くいきません。 >ご指導いただけないでしょうか? だったらまず、どういう風にやってみて、どこが上手くいかなかったのかを説明してくださいね。 たぶんそうすると質問者のスキルが推測できるだろうから、それに見合ったアドバイスがもらえると思いますよ。
補足
AAAの入っているセルを含む行の選択は出来ました。 Range("A:A").Find(What:="AAA").EntireRow.Select 最終行の選択も出来ました。 Range("A1").SpecialCells(xlCellTypeLastCell).EntireRow.Select 上から下を連続して選択して削除の方法がわかりません。