重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になっております。
ExcelVBAで作成されたマクロをExcel2003からExcel2010へ移行していたのですが、移行先環境で以下のエラーが出力され、止まってしまいます。
「並べ替えのキーとなるピボットテーブルフィールドが断定できません。」
Excelのバージョンアップにより、なぜ今まで出ていなかったこのエラーが発生したのか、ももちろんですが、このエラーメッセージの意味することすら分かりません(ググっても有効な情報に行き当たりません)。エラー自体は、以下のVBAの命令において発生しています。
もし、詳しい方がいらっしゃいましたら、エラーの意味だけでもご教授いただけないでしょうか。
Selection.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=1, _
   Orientation:=xlTopToBottom, SortMethod:=xlPinYin

A 回答 (1件)

パラメータの「Order1」に対しての「key1」が抜けているからじゃないですか?


Order1で昇順に並び替えを指定しているが、じゃあどこの行? 列? を基準に並び替えをするんだい?? という事だと思います。2003では複数の列and行を並び替えの対象にする時、ダイアログボックスが出て、並び替えの優先順位として3つの列(or行)を指定でき、それぞれ昇順か降順かを指定できます。それらがVBAでいう所の「key1」「key2」「key3」「Order1」「Order2」「Order3」になります。


>ExcelVBAで作成されたマクロ
>Selection ...(Selectionを使う記述の仕方)
という2つの記述から、多分マクロの自動記録を使ってコードを生成し、運用されているのではないかと思いました。
単純に1列 または 1行 のデータを並び替える場合、2003ではこのようなコードが作られるのでしょうか....。コードの仕様が違うのかもしれませんね。

私自身はExcel2007を使用してまして、2010でのSortメソッドの記述の詳細が分かりません。そのため、具体的にここをこうすればいいよ、というようなアドバイスが出来ません。
ただ、、ご自身で作成されたマクロでしたらどのような動作をさせたいかは把握されているかと思いますので、マクロの記録機能を使って手動でソートを行い記録させて、生成したコードを問題の部分にコピペすれば解決するかと思います。

それでは~。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!