[[20110317132657]] 『検索してみつけたアクティブセルより上の行を削除』(若葉以下) ページの最後に飛ぶ

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

 

『検索してみつけたアクティブセルより上の行を削除したい』(若葉以下)

 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.