[[20231108161048]] 『ユーザー設定で並べ替える時のエラー処理』(ポン太2号) ページの最後に飛ぶ

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

 

『ユーザー設定で並べ替える時のエラー処理』(ポン太2号)

 いつも参考にさせていただいております。
 並べ替えについて質問させて下さい。

 ユーザー設定で列の並べ替えをします。
 ごく稀にその項目名が変わることがあり、
 その後も別の作業が続く為、エラー処理をしたいと思っています。

 設定内の「仕入先」が「注文先」に変わったと想定して、
 以下を実行すると、「完了」メッセージが出て最後まで実行されます。
 ただ結果を見ると、「仕入先」はなく「注文番号」〜「着荷日」までが左詰めで並んでいる状態です。

 Sub 列並べ替え

 'A列から左詰で並べる
 On Error GoTo Last
 With ActiveSheet

    With .Sort.SortFields
         .Clear
         .Add _
             Key:=Range("A1"), _
             SortOn:=xlSortOnValues, _
             Order:=xlAscending, _
             CustomOrder:="仕入先,注文番号,品名,数量,着荷日", _
             DataOption:=xlSortNormal
     End With
     With .Sort
         .SetRange Range("A1").CurrentRegion
         .Header = xlYes
         .MatchCase = False
         .Orientation = xlLeftToRight
         .Apply
     End With

 End With

 MsgBox "完了"

 Exit Sub
 Last:
     MsgBox "失敗" & vbCrLf & "データ確認", vbExclamation

 End Sub

 ※実際のデータは90列ほどあり、その内の10列ほどを並べ替えています。
  不特定少数の人が使用するので、ユーザー設定は文字列を直接入力にしました。

 並べ替えでエラー処理は出来ないのでしょうか?
 ご教示宜しくお願いします。

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


 CustomOrderで指定されていない項目は、最後尾に置かれるというのが仕様でしょう。
 エラーになんぞなりませんよ。

 条件付き書式かなにかで、それがソート対象の文字列以外であることを知らせる対応などを取ってはいかが?
(xyz) 2023/11/08(水) 16:40:49

 かぶりましたが、そのまま

 自分の想定した結果にならないというのは、ExcelVBAがトラップするエラーの対象でありません

 CustomOrderで指定している列名が有無をソート前にチェックするようにすればいいのでは?
(´・ω・`) 2023/11/08(水) 16:43:14

 xyz様
 (´・ω・`)様

 早速のご教示ありがとうございます。

 ファイル名やシート名のように、
 コードに書き込んでいる文字列と合致しない(存在しない)場合はエラーになるものと思っておりました。。
 勉強不足でした。
 申し訳ありません。

 過去ログで、ユーザー設定を変数にしている事例を拝見したので、
 (´・ω・`)様が仰る通り、並べ替え前にチェックするコードを入れて試してみます。
(ポン太2号) 2023/11/08(水) 17:36:42

コメント返信:

[ 一覧(最新更新順) ]


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