• 締切済み

マクロお願いします。

A B C D E F G 日付 担当者 コード 顧客名 他 入金status  上記、入金status欄に、「入金済」という文字があり、それ以外は日付が入っています。この「入金済」と書いてある行を削除するマクロを組みたいと思っているのですが、まだ未熟なのでご助力のほどお願いします。 途中までですが、 sub リスト() dim 行 for 行=1 to 1000 if cells(行、6)="過入金"then ここからがわかりません。 end if next 行 end sub

みんなの回答

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

No2,onlyromです。 老婆心ながら一言。 No3(okormazdさん)の回答では上手くいかない場合があります。 それがどうい場合かは、質問者自身で考えてみませう。(^^;;; コードを書くときは色んな場合を想定しなければいけません。 以上。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

「入金済」という文字があり というんだから、 "過入金"ではおかしいんじゃないか。 で、 sub リスト() dim 行 for 行=1 to 1000   'この辺ミスがある。=、= if cells(行,6)="入金済" then 'この辺ミスがある。、,スペース rows(行).delete 'ここからがわかりません。 end if next 行 end sub

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

>この「入金済」と書いてある行を削除する と書いてあるのに >if cells(行、6)="過入金"then なぜ、"過入金" なんだらうか??? ま、それは置いといて。 見出し: 1行目 データ: 2行目~~ (処理内容) 入金status(F列)に”入金済”と入っていたらその行を削除する。 '------------------------------ Sub Test()  Dim R As Long  Dim LastRow As Long  LastRow = Cells(Rows.Count,"F").End(xlUp).Row  For R = LastRow To 2 Step -1    If Cells(R, "F").Value = "入金済" Then       Rows(R).Delete xlShiftUp    End If  Next R End Sub '-------------------------------- 上記では、F列で最終行を取得しているが、 最終行が別の列で取得できるのであればその列で取得。 例えば、得意先名の列(D列)なら LastRow = Cells(Rows.Count,"D").End(xlUp).Row とする。 以上。  

igu0625
質問者

お礼

ありがとうございます。過入金と入金済は間違いでした‥ まだ、マクロを勉強しようかなと思って数日しか経ってなく無理なのはわかっているのですが、こうやって親身に教えてもらえて大変感謝しています。是非、参考にして今後に役立てていきたいと思います。 もし良かったら、今回の意味で、Rが変数なのはわかるのですが、LastRowは同じような扱いなのでしょうか? また、step-1とはどういう意味でしょうか? よろしくお願い致します。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

マクロの記録で 1、オートフィルター 入金済み を表示 2、行を選択、削除 3、フィルターの解除 マクロの記録の終了 次に、VBエディターで 行の範囲を ROW(2:1000) とうんと広くします。 試してみてください。