0

諸先輩方、いつもお世話になっております。

率直に、タイトルの通りです。

Excelで、ソートを、ユーザー設定のリストを使いたいんです。

頑張ってできなかったので、そのあたりのことをご報告と、その先のアンサーが戴けたらと思います。

元の、ノードは、「Excel操作(ソート)」を使用しました。

これでは、特定のフィールドの昇順降順しか指定できません。

そこで、スクリプトで書き足せないかと調べて、次のサイトなどが参照になるかと思いました。

ユーザー設定リストを使って並べ替える(Sort)

https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.sort

どうやら、要素【ordercustom】を設定出来たらいけるんじゃね?と思い至りました。(そもそも違ってたらすみません)

で、要素【ordercustom】の値の指定の仕方がわからないからできないのでは、という仮説1と、

要素【ordercustom】の配置の仕方がわからないからできない、という仮説2が立ち、

どちらか、もしくはどちらも条件を満たせないので、ソートできないのかなと思いました。

仮説1は、以下のような設定を試みてダメ?なのかなというお話です。

前述の「Exdel操作(ソート)」の最後のほう

scell = !開始セル!
ecell = !終了セル!
cellAddress = !ソートキーのセル位置!
orderStr = !並び替え順序|昇順,降順!
headerStr = !1行目の扱い|見出しとしない,見出しとする,自動判別!
order1 = 1
header = 2

とあるところに、【ordercustom】の値を付けたしで設定を試みています

「ordercustom = 13」

13は、ゴルゴ、ではなく、ユーザー設定のリストの順番を指定するようです。これ自体、ナンバリングのルールがよくわからないので、最初を「0」からカウントしたり、普通に数えてみたりいろいろ試したのですが、ダメでした。

次に、直で値をしてするパターンもあるようです。

「ordercustom = "HD,TK,COM,TG,TCN,TMS"」

これも、適当です。ルールがわかれば従いますけど、わからないものはわからないので、すみません。

仮説2は、ソートの実行時に上記のような要素をしているするのですが、その方法がわかりません。

ノードの最後のあたりに、

'cell.select
If header = "" Then
worksheet.range(targetRange).Sort cell,order1
Else
worksheet.range(targetRange).Sort cell,order1,,,,,,header
End If

というのがあるので、

「worksheet.range(targetRange).Sort cell,order1,,,,,,header」のカンマのどこかに「ordercustom」を入れれば何とかなるかなと試みましたが、成功せず、エラーメッセージがちょいちょい変わるのですが、場所があっているからかどうかわかりかねるので、ここでは、どこでどのエラーが返ってきたとかの説明は省きます。

まあ、そもそもこれらの仮説までが違っていたらゼロベースでのご教授いただいてもいいのですが、上記のその先がわかるようでしたら、今後の参考にさせていただきたいので、専門家のちゃんとしたご意見伺えたらと思います。

…それまでは、エミュレーションでちまちま作業させることで、クライアント様には納得いただくとしますw

この質問は解決済みのためクローズされています。
うーみん ベストアンサーとして選択しました
回答とコメントは、会員登録(無料)で閲覧できるようになります。