[XL2000]Excel起動後VBAで並べ替えを行うとユーザー定義リストが無効

上記の製品の総称を以下 Excel とします。

概要

この資料は、Microsoft Visual Basic Programming System Applications (以下 VBA) を使用してデータの並べ替えをおこなうと、ユーザー定義リストが無効になる現象につ いて説明しています。

詳細

ユーザー定義リストにリストを追加し、追加したリストの項目の順番にしたがって並べ 替えをおこなうことができますが、指定したユーザー定義リストの順番で並べ替えがお こなわれない場合があります。
この現象は、以下の条件を満たした場合に発生します。
  • Excel を起動した直後である。
かつ
  • VBA を使用して並べ替えをおこなっている。
かつ
  • Excel の既定で設定されているリスト以外のユーザー定義リストを使用して並べ替え をおこなっている。

再現手順

  1. Excel 2000 を起動し、新規ワークブックを作成します。
  2. 以下のデータを入力します。

    A1: red
    A2: blue
    A3: green
    A4: yellow
    A5: pink
  3. [ツール] メニューの [オプション] より [ユーザー定義リスト] タブをクリックし ます。
  4. "リストの取り込み元範囲" に "$A$1:$A$5" を指定し、[インポート] ボタンを クリックします。
  5. [OK] ボタンをクリックします。
  6. 新規ワークブックを追加し、以下のデータを入力します。

    A1: pink
    A2: blue
    A3: green
    A4: blue
    A5: yellow
    A6: pink
    A7: red
    A8: blue
    A9: red
  7. Visual Basic Editor を起動します。
  8. 標準モジュールを挿入し、以下のコードを記述します。

    Sub Custom_Sort()
    Range("A1").Sort Key1:=Range("A1"), Order1:= _
    xlAscending, Header:=xlGuess, OrderCustom:=13, _
    MatchCase:=False, Orientation:= xlTopToBottom
    End Sub
    注意: OrderCustom 引数の値は、ユーザー定義リストの一覧に表示されている位置
    の値になります。日本語版 Excel 2000 の既定では、12 個のユーザー定義
    リストが設定されています。既にユーザー定義リストを作成している場合は、
    OrderCustom 引数の値は変わってきますので、ユーザー定義リストの一覧で
    確認し値を変更してください。
  9. 手順 6 で入力したワークシートをアクティブにし、Custom_Sort プロシージャを実 行します。
  10. 以下のようにデータの並べ替えがおこなわれます。

    A1: red
    A2: red
    A3: blue
    A4: blue
    A5: blue
    A6: green
    A7: yellow
    A8: pink
    A9: pink
  11. ブックを保存し、Excel 2000 を終了します。
  12. Excel 2000 を再度起動し、保存したファイルを開きます。
  13. Custom_Sort プロシージャを実行します。

結果

以下のように標準の順番で並べ替えがおこなわれます。

A1: blue
A2: blue
A3: blue
A4: green
A5: pink
A6: pink
A7: red
A8: red
A9: yellow

状況

この問題は Microsoft Excel 2002 で修正いたしました。

回避策

[ツール] メニューの [オプション] で 1 度 [オプション] ダイアログを表示させま す。設定の変更は必要ありません。

備考

  • Excel 起動直後であっても、操作でユーザー定義リストを使用して並べ替えをおこ なった場合は、正常に並べ替えられます。
プロパティ

文書番号:415907 - 最終更新日: 2004/05/18 - リビジョン: 1

フィードバック