[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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 >
(かんぽん) 2023/08/18(金) 12:45:16
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.