• ベストアンサー

データ→並べ替え→オプションについて

VBAマクロで自動で並べ替えを行っていますが、 データ→並べ替え→オプションで並べ替えオプションの 「並べ替え順序の指定」の欄に自分が作成したリストがあるのですが、(上から13番目、一番下に存在)マクロを実行すると、その通りに並べてくれたり、くれなかったりと気まぐれです。 こんな経験をしたかたいらっしゃいますか。 もしいればどういった原因が考えられるのでしょうか? わかる方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >「マクロで、独自の並び替えリストを付け加え、それでもって、「並び替え」をさせ、独自の並び替えリストは、削除します。」 こうやって書くのは簡単でも、覚えていたものをそのままやってみたら、なんとうまくいかないので、試行錯誤してしまいました。(参りましたね(^^;)いいかげんに、覚えていたのとは、かなり差があります。 問題は、いわゆるオーダーカスタム(自分で作った順番)が正しくあるかどうか、それは、どこにあるか、ということを正確に把握するためには、一旦、VBAで、オーダーカスタムを与えて、そこで、「リスト番号」を取らないとダメだっていうことなのです。ただし、削除しなくてもよいです。カスタムリストに既にある時は、カスタムリストには入りません。 そこで、こんな風にやってみたらどうでしょう? ちなみに、Header:=xlYes でないと、うまくないようです。 ただ、数字の場合は、一旦、文字列に変わってしまいますね。 Sub SortSample1() Dim Rng As Range, myList As Variant, ListNum As Integer Set Rng = ActiveCell.CurrentRegion  myList = Array("社長", "専務", "常務", "部長", "次長", "課長", "係長", "主任")  Application.AddCustomList ListArray:=myList  ListNum = Application.GetCustomListNum(myList)  Rng.Sort Key1:=Rng.Cells(1, 1), Order1:=xlAscending, Header:=xlYes, _     OrderCustom:=ListNum + 1, MatchCase:=False, Orientation:=xlTopToBottom, _     SortMethod:=xlStroke Application.DeleteCustomList ListNum End Sub

okkouta
質問者

お礼

本当にすみません。ただ恐縮するばかりです。 色々知識を与えていただき、ありがとうございます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。Wend02 です。 直接の回答にはならないかもしれませんが、通常、私は、マクロでは、独自の並び替えのリストが必要なときは、既に並び替えリストがあるなしに関わらず、必ず、マクロで、独自の並び替えリストを付け加え、それでもって、「並び替え」をさせ、独自の並び替えリストは、削除します。 VBAのお約束のようなものだ、と私は思っています。 それ以外に関しては、問題があったコードをみてみないとはっきりしたことは言えませんね。

okkouta
質問者

お礼

3つの質問に親切に答えていただきありがたく存じます。 「マクロで、独自の並び替えリストを付け加え、それでもって、「並び替え」をさせ、独自の並び替えリストは、削除します。」 どういう技なのか気になります。 如何せん自分でマクロを組む力量がないので、教えてもらったコードをいじくることくらいしかできない自分が情けない。 マクロコードを構築できる皆さんにはただただ敬服するばかりです。 よろしければその技も教えていただければ使用したいと思うのですが・・・ (私だけのために3つもの質問に答えていただきながら頼むのもあつかましいのですが)

okkouta
質問者

補足

今、扱っていて「あれ」と思ったのですが、昼に行っていたパソコン(職場)では並べ替えオプションの独自の並び替えリストの最後に作成したリストがあったのに、家のパソコンで開いてみたらないんです。 質問の気まぐれ現象もこれに起因(原因はわからないが・・・)するんですかね~?

関連するQ&A