[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『検索してみつけたアクティブセルより上の行を削除したい』(若葉以下)
A B C D 1 08:21:00 4 3.8 2 08:21:01 3.8 3.8 3 08:21:02 3.8 3.7 4 08:21:03 3.9 3.8 5 08:21:04 3.8 3.9
このようなデータが入っていて、セル検索でA5をアクティブにしたとき、検索されたセルより上の行すべてを削除するようなマクロを作りたいと思っています。
毎回検索されるセルがA5であれば自力で解決できるのですが、検索される行は毎回変動してしまうので範囲設定がうまくいかず、困っています。 (A列が検索されるのは変わらない) このようなマクロを作るのは無理なのでしょうか? ご教授のほど、よろしくお願いいたします。
↓条件に合致するセルを検索するコードはこのような状態です。
Sub activecell_search1()
Dim myStr As String
Worksheets("sheet1").Select
myStr = Application.InputBox("番号を入力してください", "検索文字の入力", Type:=2) On Error Resume Next If myStr = "False" Then Exit Sub Cells.Find(What:=myStr, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False).Activate If Err.Number = 0 Then ActiveCell.Select End If On Error GoTo 0 End Sub
エクセルのバージョン:2003 OS:Windows XP
こんな風にしてみましょう。
Sub activecell_search1() Dim myStr As String Dim myRng As Range myStr = Application.InputBox("番号を入力してください", "検索文字の入力", Type:=2) If myStr = "False" Then Exit Sub With Worksheets("sheet1").Columns("A") 'A列の見つかったセルをmyRngに格納 Set myRng = .Find(What:=myStr, After:=.Cells(.Cells.Count), LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, MatchByte:=False) If Not myRng Is Nothing Then '見つかった場合 'A1セルから見つかったセルまでの行全体を削除 .Range(.Range("A1"), myRng).EntireRow.Delete Shift:=xlShiftUp End If End With End Sub
(momo)
mono様、ありがとうございました!解決いたしました! もっと精進したいと思います。 本当にありがとうございました!
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.