• 締切済み

excelの集計で対照となる列の値となる行を削除をするマクロ

excelの集計で入力した日付を入れているのですが、○月○日から△月△日までのデータ行を削除できるマクロができないで困っています。 ユーザーフォームを読み出して、該当する日付が入力されている行を一括で削除できればと考えています。 仕事の効率化には必ず必要です。 よろしくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。Wendy02です。 補足ですが、#1 のコードは、Excel 97 以上のオールバージョン用で、かなり変則的なコードです。 下位バージョン(Excel97など)には、日付検索が出来ない時があるという、独特のバグが存在するからです。 以下は、以下は、Excel2002以降の、たぶん、ノーマルなコードです。 なお、仮に、1列目ということで、検索対象は、Columns(1) となっております。  'Excel2002以降   Dim r1 As Range  Dim r2 As Range  Dim Kaisi As String  Dim Owari As String  Kaisi = "5/1" 'セルの書式にあわせる  Owari = "5/10" ' ""  Set r1 = ActiveSheet.Columns(1).Find(Kaisi, LookIn:=xlValues)  If Not r1 Is Nothing Then   Set r2 = ActiveSheet.Columns(1).Find(Owari, LookIn:=xlValues, _        SearchDirection:=xlPrevious)   If Not r2 Is Nothing Then    Range(r1, r2).EntireRow.Delete   End If  End If    Set r1 = Nothing: Set r2 = Nothing

atutokusin
質問者

お礼

Wendy02さん 大変遅くなりまして、申し訳ありませんでした。 先ほど試してみたところ、ばっちり削除されました! あとは、開始と終わりの日付をユーザーフォームで代入すればいいと思うのですが、初心者なものでマクロに日付を代入する方法が分かりません。 よろしければ、そちらの方もお教えいただければと思います。 よろしくお願いいたします。 今回お教えいただいたマクロは少しづつ理解して確実に覚えたいと思います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 本来は詳しく書いていただけると良いのですが。何につまずいているのか良く分かりません。出来れば、その状況を書いていただいたほうが、回答者側の無駄が少なくてすみます。 以下の場合は、シリアル値で探しています。Find メソッドでは、場合によっては外れてしまう可能性があります。ただし、これは、同じものがないという条件の下で作られています。 同じものがある場合は、j の変数側を   j = WorksheetFunction.Match(CLng(Owari), Columns(1).Cells, 1) とします。 Dim i As Long Dim j As Long Dim Kaisi As Date Dim Owari As Date  Kaisi = #4/1/2006# '←TextBox で持ってくる場合は、CDateで変換します。  Owari = #5/1/2006# ' ""  '初期値  i = 0: j = 0  On Error Resume Next     i = WorksheetFunction.Match(CLng(Kaisi), Columns(1).Cells, 0)   j = WorksheetFunction.Match(CLng(Owari), Columns(1).Cells, 0)     On Error GoTo 0  If i > 0 And j > 0 Then    Range(Cells(i, 1), Cells(j, 1)).EntireRow.Delete  End If

atutokusin
質問者

お礼

早速ご返答いだだきましてありがとうございます! 早速試してみたいと思います。

関連するQ&A