マクロ「リストから回収済データを削除して未回収データだけにする」の不具合?
Question 011p 拙著「組み方講座・プロの定番」 Previous Next
120ページ 3章2-3 裏技[2] ◆ 環境・・ Excel 2000 & Windows 2000
詳細は こちら
処理前のシートでD2がスペースだった場合(浅井秋絵の回収日がスペース)、
このマクロだと削除されてしまいます。
ご確認ください。
Answer   Copyright (C) 2006.4.12 永井善王
拙著「ExcelVBAマクロ組み方講座 プロの定番・裏技・合わせ技[編]」をご購読、ありがとうございます。
裏技[2]は、「リストから回収済データを削除して未回収データだけにする」と題するサンプルで、下図のように、月が変わったときなどに、回収日が空白である行だけの表にするためのものです。

  処理概要図 ・・・ ご指摘に副って修正済
     

さっそく再現テストを行いましたところ、ご指摘のとおり不具合が発生しました。 動作確認には万全を期したつもりでしたが大変申し訳ございません。 お詫び申し上げます。

つきましては、修正版を下記のとおりご用意しました。 主な修正内容をご説明させてください。
Sub リストから回収済データを削除して未回収データだけにする()
10  シート名 = "Sheet1"
20  抽出列 = 4
31  Worksheets(シート名).Copy Before:=Sheets(1)     '仮シートを作成
41  Worksheets(シート名).Cells.Clear                '全てのセルを全てクリア
51  With Sheets(1).Range("A1")                      '仮シートのA1セルに関して
52      .Select
53      .AutoFilter Field:=抽出列, Criteria1:="="   '空白セルでフィルタ
54      .CurrentRegion.Copy Destination:= _
            Worksheets(シート名).Range("A1")        'アクティブセル領域をコピー
55  End With
61  Application.DisplayAlerts = False
71  Sheets(1).Delete                                '仮シートを削除
End Sub
【主な修正内容】
・処理フローの変更:(1) 処理前のシートのコピーを作成、
          (2) その(仮)シートのD列が空白であるデータを抽出、
           (3) それを処理前のシートにコピーする
・コードの修正カ所:上記コードの行番号が n0 ・・・ 従来どおり、
          それ以外の行番号(n1、n2、等)・・・ 修正
・動作確認状況:  (1) 上図のケース、(2) 全て回収済みのケース、 (3) 全て未回収のケース
修正済サンプルブックのダウンロードは
ここをクリック して行ってください。 (3_AutoF-B2_Mikaisyu.xls 46KB)
なお、このことは
正誤表Support ページにても公開させていただきます。 すみませんでした。

 

Excel VBA Macro