- ベストアンサー
Excel2007のマクロでマクロを実行したところ、エラーが出てしまいました。どうすればよいでしょうか?
- Excel2007のマクロでマクロを実行したところ、エラーが出てしまいました。エラーコードは「1004」で、「RangeクラスのSelectメソッドが失敗しました」というメッセージが表示されます。
- エラーが発生している箇所は「Range("テーブル1[#All]").Select」です。この部分に問題がありますが、具体的な修正方法はわかりません。
- マクロの記録を使って作成したマクロのため、修正方法がわからない状況です。解決策を教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ご質問の直接の回答としては,今のマクロでとりたてて間違いはありません。 が,問題が起きている行とその2つ下も含めて Range("テーブル1[#All]").Select ActiveWindow.SmallScroll Down:=-36 Range("テーブル1[[#Headers],[列5]]").Select この3行は削除してしまってください。実効的な機能が無いので,削除しても全く問題有りません。 それで実際には,マクロの記録を取る所からやり直しましょう。 まず最初に。 オートフィルタを取り付ける際に,ホームタブの「テーブルとして書式設定」を利用せず,従来通りホームタブの「並べ替えとフィルタ」の中からオートフィルタを取り付けて(というマクロを記録して)ご利用になってください。 次に。 今のマクロを破棄して,丸ごと次のようなのを利用してみてください。 sub macro1() range("A5:L55").sort key1:=range("E5"), order1:=xlascending, header:=xlyes range("A5:L55").autofilter field:=12, criteria1:=Array("condition", "congruent", "control", "experiment", "="), operator:=xlfiltervalues end sub マクロにやらせる動作は 1.E列の昇順で並べ替える 2.L列のオートフィルタを所定の文言で絞り込む の2つで十分です。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
回答をご覧になってだいぶ時間が経ちましたが,その後の音沙汰が無いということは? >これも自動化できるのでしょうか? そこまで対応できる手段として最初の回答で… >今のマクロを破棄して,丸ごと次のようなのを利用してみてください。 sub macro1() range("A5:L55").sort key1:=range("E5"), order1:=xlascending, header:=xlyes range("A5:L55").autofilter field:=12, criteria1:=Array("condition", "congruent", "control", "experiment", "="), operator:=xlfiltervalues end sub とお話ししておきましたが,まだ試していないのでしょうか。まだでしたら試してください。 #追加ご質問を拝見して幾つか気がついた点もありますが,余計なことを言うとすぐそっちにひっかかって肝心の他のお話しした内容が無視されちゃいますので,止めておきます。でも並べ替えも含めてエラー無くマクロが動いたなら,とりあえず当初のご質問内容はクリアしたと判断できますので,良かったですね。
お礼
すみません、まだ試していませんでした。 他にもマクロに作業させたかったのでどう直せばよいか分らなくて・・・。 ですが今並び替えのところにお答えを代入して調整したら完璧に上手くいきました! 既に一枚一枚マクロを書き換えてやり終わっていたのですが、これでスッキリしました。 ありがとうございました!
お礼
素早い回答ありがとうございます! 「並び替えとフィルタ」から試したところ、マクロを実行してもエラーは出なくなりましたが、ソートがされなくなってしまったのですが、どうすればよいのでしょう? 以下マクロです。 Sub Macro1() ' ' Macro1 Macro ' ' ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 5 Columns("L:P").Select Selection.Delete Shift:=xlToLeft ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("A6").Select ActiveWindow.SmallScroll Down:=30 Range("A6:L55").Select Selection.AutoFilter ActiveWindow.SmallScroll Down:=-6 Range("L6").Select ActiveWorkbook.Worksheets("ID.01").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("ID.01").AutoFilter.Sort.SortFields.Add Key:=Range( _ "L6:L54"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("ID.01").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
補足
すみません、"ID.01"を変えればよかったのですね。 でもいちいちシートNO.を打っていたらマクロの意味がない気もします。 これも自動化できるのでしょうか?