[[20230818101248]] 『VBAのsort メソッドのcustomorderプロパティの不求x(かんぽん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAのsort メソッドのcustomorderプロパティの不具合』(かんぽん)

下記コードのような customorderプロパティを含むsortメソッドで第三条件まで指定した並び替えのマクロを作成して customorder条件指定している列には入力規則のドロップダウン式のセル書式を設定しているのですが、実際にマクロを実行すると第二条件の部分が反映されずに第一条件のグループの中での第二条件の順序がバラバラになります。 以下が実際の記載コードなのですが原因がわかる方おられましたら何方かお教えいただけないでしょうか?
Sub 部署並替()

'×××シートの範囲を選択して

  Range("A6:OR50").Select
'クリアメソッドで前のSortFieidsオブジェクトをリセットします
    ActiveWorkbook.Worksheets("×××").Sort.SortFields.Clear
'第一条件として部署ごとの並びを設定します
    ActiveWorkbook.Worksheets("×××").Sort.SortFields.Add2 Key:=Range("B6:B50"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "×××,×××,×××,×××,×××,×××,×××", DataOption:=xlSortNormal
'第二条件として役職ごとの並び順を設定します
    ActiveWorkbook.Worksheets("×××").Sort.SortFields.Add2 Key:=Range("C6:C50"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "×××,×××,×××,×××,×××,×××,×××,×××,×××,×××", DataOption:=xlSortNormal
'第三条件として入社年月日の古い順に並ぶように設定します
    ActiveWorkbook.Worksheets("×××").Sort.SortFields.Add2 Key:=Range("F6:F50"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
'上記条件ものと以下の設定でのソートを行い並び替えを処理します。
    With ActiveWorkbook.Worksheets("×××").Sort
        .SetRange Range("A6:OR50")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
'最後A1セルを選択した状態にします。
    Range("A1").Select
End Sub

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


>>ソート順に該当しない文字列や空白が有る場合は、ソートの順番は最後(最下位)になります。
とかわ大丈夫っすか^^;。何処かで↑のよ〜な注意書きを見たことが御座います。
文字列並び替えは事故多発(◎_◎;)のような気が。。。
コード処理をしたうえで、数値でソートなら安全かもぉ。。。(*^^*)

思うだけで。。。コードは何も見てません。ひえ〜。お許しを
m(__)m
(隠居Z) 2023/08/18(金) 12:21:09

ご返信ありがとうございます
ご指摘の該当しない文字列などはカスタムオーダーでの序列をそのままコピペして入力規則の
リストの定義欄に入力しておりますので そのあたりは問題ないかと思われます。

(かんぽん) 2023/08/18(金) 12:45:16


.SortMethod = xlPinYin
↑これを
↓こうしたら
.SortMethod = xlStroke
どうなる?
(ufj) 2023/08/18(金) 14:08:51

ufj様
ご指摘のコードに変えました所問題なく動作するようになりました
誠に有難うございます、ピンインと筆画方式で動作が異なるとは思いもよりませんでした
勉強になりました
(かんぽん) 2023/08/18(金) 14:38:46

解決したようで良かった
以下は個人的な感想

xlPinYin(ふりがな情報)についてはパソコンの決まりごとと人間の感覚とが乖離しやすいところなので、頭の隅に置いとくといつか助かるかもしれない
(隠居Zさんご指摘の「文字列並び替えは事故多発」もこの乖離に起因することが多いと思う)

…とはいえ僕も実は、CustomOrderを指定して尚xlPinYinで想定外の挙動をするとは思ってなかった
勉強になった
(ufj) 2023/08/18(金) 15:09:44


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.