• 締切済み

EXCEL2000で作成したマクロが2007で動作しない

EXCEL2000で作成したマクロがEXCEL2007上で動作しません。 2つのシートに入ったデータを,「抽出」シートにコピー後, 抽出条件に合わせて抽出するというものなのですが, 「Sheet1」で最終行を取得するところで,正しい範囲を 選択しません。どこが間違えているのか,ご指南頂けないでしょうか? お願いいたします。 下には,正しい結果が出ない所までを貼りつけました。 Sub フィルタオプション() Dim LastRow As Long, LastColumn As Long Dim myData As Range Dim myCriteria As Range Sheets("Sheet1").Select Rows("1:1").Select Selection.Copy Sheets("抽出").Select Rows("3:3").Select ActiveSheet.Paste If Worksheets("Sheet1").FilterMode = True Then   Worksheets("Sheet1").ShowAllData End If With Worksheets("Sheet1") LastRow = .Cells(Application.Rows.Count, "A").End(xlUp).Row End With Sheets("Sheet1").Select Range(Rows(2), Rows(LastRow)).Select Selection.Copy Range("A1").Select Sheets("抽出").Select Range(Rows(4), Rows(4)).Select Selection.Insert Shift:=xlDown

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

2003側で下記をやってみて、質問者のコードと結果は違うか? 同じなら2007で実行して、うまく行くか、やってみてください。 うまく行かなければ無視してください。 マクロの記録の丸出しのような冗長なコードを修正しました。 その点は勉強になるでしょう。 Sub test01() Sheets("Sheet1").Rows("1:1").Copy Sheets("抽出").Rows("3:3") If Worksheets("Sheet1").AutoFilterMode = True Then Worksheets("Sheet1").AutoFilterMode = False End If D = Worksheets("Sheet1").Cells(Application.Rows.Count, "A").End(xlUp).Row Sheets("Sheet1").Range("2:" & D).Copy Sheets("抽出").Rows(4) End Sub ーーー 質問の Range("A1").Select Sheets("抽出").Select Range(Rows(4), Rows(4)).Select Selection.Insert Shift:=xlDown のところが良く理解できませんでした。 >Range("A1").Select はどちらのシートのA1か明示は? >Range(Rows(4), Rows(4)).Select こんな書き方必要ないのでは? Pasteはどこへ行った? >Insert Shift:=xlDownする必要有るの?

littlebe
質問者

お礼

imogasiさん ご回答ありがとうございました。 早速試させていただいたのですが,やはり,Sheet1の最終行を正しく 認識しません・・・。 ご回答にお礼申し上げます。

関連するQ&A