• 締切済み

エクセル2010マクロについて教えてください!

パソコンが代わってEXCEL2003から2010に代わってしまい今までできていたマクロができなくなってしまいました。 小規模な会社なので私だけしかEXCELを使る人がいなく、困っています。 2003の内容を表示しますので、誰か教えてください。 エラー1004 RangeクラスのSortメソッドが失敗 ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "花[すべて]", xlLabelOnly lection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _ Orientation:=xlTopToBottom, SortMethod:=xlPinYin 誰か助けてください。 よろしく御願いします。

みんなの回答

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

Excel2007から、ピボットテーブルのVBAコードはかなり 変わっていますので、そのあたり書き直しが必要です。 関連する部分も多いと思うので、まずはこの辺を、どぞ。 http://office.microsoft.com/ja-jp/excel-help/HA010198895.aspx そのうえで、この辺を読むと書き直し方が分かるかと。 http://www11.plala.or.jp/koma_Excel/pivot_menu.html

関連するQ&A

  • 記述を簡略化させたい

    お世話になります。 下記の記述をスマートにさせたいのですが、ご教示お願いします。         記 Sub 優先順位() Range("A16:Y25").Select Selection.Sort Key1:=Range("Y16"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A43:Y52").Select Selection.Sort Key1:=Range("Y43"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A70:Y79").Select Selection.Sort Key1:=Range("Y70"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A97:Y106").Select Selection.Sort Key1:=Range("Y97"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Range("A16").Select End Sub

  • マクロの解析してください。

    仕事で使うようになったファイルにマクロが登録してありました。 一体、何をしているのかわかる方お願いします。 Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Key2:=Range("B4") _ , Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False _ , Orientation:=xlTopToBottom, SortMethod:=xlPinYin End Sub と、あるのですが宜しくお願いします。

  • Excelのマクロでソートがうまく動かない

    *** ソース *** Sheets("Sheet 1").Select Range("B2:H92").Select Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Key2:=Range("H3") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin Range("B2").Select Sheets("Sheet 2").Select Range("B2:K49").Select Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Key2:=Range("I3") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin Range("B2").Select ... 以下省略 ************* 上記のように複数のシートを一括してソートを行うようにマクロを組んでいます。 ですがマクロを実行するとタイトル行も含めてソートを行うなど、おかしな挙動になってしまいます。 ソートの条件としては「範囲の先頭行」を「タイトル行」で行わせたいのですが、「データ」でソートを行うシートが出てしまうのです。 太字にすると回避できるなど試したのですが、うまくいかなかったです。 Header:=xlYes にする事でも回避できるとあったのですが、変数を説明している一覧などが見つからなかった為、試していません。 よい方法をご存知の方がいましたら、ご教授下さい。

  • エクセルマクロのソートについて

    こんにちわ! エクセルマクロのソートについて質問です。 プロシャージャを使ってソート使いまわそうと思うのですが、範囲、並び替えキーを変えたいと思うのですが可能でしょうか? Sub Sort()    Range("A1:c10000").Sort _ Key1:=Range("a1") , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End Sub 一応、動作はしませんが下記のようなイメージで動かしたいです。 Sub Sort() Dim key As String Dim hanni As String key = Range("a1") hanni = Range("A1:c10000") 'セルhanniの範囲のデータをkey列をキーに昇順に並べ替えます hanni.Sort _ Key1:=key _ , Order1:=xlAscending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ , SortMethod:=xlPinYin End Sub 可能でしょうか? わかる方おりましたらアドバイスの程お願いします。

  • VBA ファイルを読み込む際のSortメソッドの使い方

    tabで区切られたテキストファイルを読み込み、日時の列を昇順で並び替える処理をしようとしました。 sortメソッドを使って並び変えようとしましたが、上手くいきません。。 既に開いているエクセル上では簡単なsortメソッドを使って並び替えはできました。↓のようなマクロ記録を使って。 Range("A1:A11").Select Range("A1:C11").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:= xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin,DataOption1:=xlSortNormal ファイルを読み込んで、sortメソッドを使うには何か特別な方法があるのでしょうか?どなたか教えて下さい。よろしくお願いします。

  • マクロを使用してソートしたいのです。

    どなたか教えてください。 マクロの自動記録ですと、 Range("A1:E942").Sort Key1:=Range("E1"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal このようになるのですが、データー件数が毎回異なるのです。上の件数だと942件ですが、次回行うときは、958件となったり致します。「E列」を昇順でソートするにはどのように行ったら良いのでしょうか?

  • EXCEL VBA ソートにおいて

    EXCEL 2003 のVBAのsortにおいて、解決できなくて困って おります。 名前,色,産地,品質,味,値段,重さ, りんご,赤,青森,10,10,500,100 みかん,黄,和歌山,10,10,300,50 すいか,緑,群馬,10,8,2000,1000 メロン,黄緑,青森,10,8,2500,500 いちじく,赤,鹿児島,8,8,200,100 名前、品質、値段の順に並びかえたいと思い、 excelのVBAの記録でオートフィルタ後に 並び替えを行ったところ下記のコードが記録されました。 Sub Macro28() Cells.Select Selection.AutoFilter Selection.Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Key2:=Range("D2"), Order2:=xlAscending, _ Key3:=Range("F2"), Order3:=xlAscending, _ Header:=xlYes, OrderCustom:=1, _ MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, _ DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal, _ DataOption3:=xlSortNormal end sub ところが、これをオブジェクトのマクロに使用して(2,3行目を自分の使い たいように訂正)みると作動しません。 Private Sub CommandButton1_Click() worksheets(1).Select Selection.AutoFilter Selection.Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Key2:=Range("D2"), Order2:=xlAscending, _ Key3:=Range("F2"), Order3:=xlAscending, _ Header:=xlYes, OrderCustom:=1, _ MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal, DataOption3:=xlSortNormal End Sub watch 式では 3行目までは worksheets(1).Select = TRUE ですし Selection.AutoFilter = TRUE となっているのですが、 sortの反応が分からない状況です。 Selection.Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Key2:=Range("D2"), Order2:=xlAscending, _ Key3:=Range("F2"), Order3:=xlAscending, _ Header:=xlYes, OrderCustom:=1, _ MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal, DataOption3:=xlSortNormal この部分が問題なのかと考えております。 ネットで調べて worksheets(1).RANGE("A1:G6").Select Selection.sort…… とか worksheets(1).RANGE("A1:G6").sort とかも試してみたのですが、だめでした。 sort を使用するときにselectionとの相性や、 rangeとの兼ね合いで決まり等があるのでしょうか。 色々なサイトを回ってはいるのですが、ちょっと解決 にいたることができません。 どなたか、ご教授いただけると幸いです。

  • エクセル VBA 集計方法

    各シート毎に下記の内容にて集計をしたいのですが、A2のセルにデータがない場合集計をしない方法がわからないのでご存じの方宜しくお願い致します。 Sheets("Sheet1").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet2").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True Sheets("Sheet3").Select Range("A1:P62").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(16), _ Replace:=True, PageBreaks:=False, SummaryBelowData:=True End Sub

  • Excelのイベントマクロ

    Private Sub Worksheet_Activate()に関する質問です。 ワークシート1と2があるとします。 ワークシート1は普通のデータが記されており、それのソートを実行するマクロをMacro1、そのデータから重複したものを外してソートするマクロをMacro2とし、Macro1から呼び出してます。 今、シート2を開いたときは必ず、シート1でMacro1を実行するようにしたいのですが、以下のように記述すると、無限ループになってしまいうまくいきません。 どなたか、方法をお教えください。 Sheet2に記載したイベントマクロ Private Sub Worksheet_Activate() Sheets("Sheet1").Select Macro1 Sheets("Sheet2").Select End Sub 標準モジュールに記載したマクロ Sub Macro1() Dim team As Integer ActiveSheet.Unprotect ("pass") Range("A3:c18").Select Selection.Sort Key1:=Range("c3"), Order1:=xlAscending, Key2:=Range("A3") ,Order2:=xlAscending, Header:=xlNo,OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal team = Range("b1").Value ActiveSheet.PageSetup.PrintArea = "$A$3:$c$" + CStr(team + 2) Macro2 Range("A1").Select ActiveSheet.Protect ("pass") End Sub Sub Macro2() Range("i3:j18").ClearContents Range("i3").Select Selection.Consolidate Sources:="R3C6:R18C7", Function:=xlMax, TopRow:=False,LeftColumn:=True, CreateLinks:=False Range("i3:k18").Select Selection.Sort Key1:=Range("k3"), Order1:=xlAscending, Header:=xlNo,OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal Range("j3:j18").Select Selection.NumberFormatLocal = "0_);[赤](0)" End Sub

  • エクセル・並び替えのマクロ

    エクセルで並び替えのマクロを作ったのですが ___A ______B ______C ______D ______E ______F _____________G 1 (株)カネカ【東証1部 : 4118.T】 2 日付 __始値 _高値 _安値 _終値 _出来高 ___調整後 3 07/07 1,030 1,069 ___941 __974 30,772,000 ___974 4 07/06 1,057 1,093 1,016 1,033 26,904,000 1,033 5 07/05 1,080 1,086 1,023 1,051 26,541,000 1,051 6 07/04 1,113 1,209 1,087 1,098 36,317,000 1,098 7 07/03 1,096 1,128 1,020 1,124 23,988,000 1,124 8 07/02 1,098 1,147 1,020 1,105 28,609,000 1,105 9 07/01 1,100 1,158 1,078 1,082 17,808,000 1,082 このような表で マクロ記録開始 セルA3をクリック データ→並び替え 優先されるキー:日付・昇順 データ範囲の先頭行:タイトル行 マクロ記録終了 で、できたマクロが Sub Macro1() Range("A3").Select Range("A1:G9").Sort Key1:=Range("A3"), Order1:=xlAscending,Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 1行目、2行目の(株)カネカ、日付、始値…、が8行目、9行目になってしまいます そこで、マクロの Range("A1:G9")を Range("A3:G9")に書き換えて Sub Macro2() Range("A3").Select Range("A3:G9").Sort Key1:=Range("A3"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ SortMethod:=xlPinYin, DataOption1:=xlSortNormal End Sub これを実行すると 日付が、07/07、07/01、07/02、07/03、07/04、07/05、07/06 の順番になってしまいます どうしたらよいのでしょう?