Excel操作(ソート)でユーザー設定を使いたい
諸先輩方、いつもお世話になっております。
率直に、タイトルの通りです。
Excelで、ソートを、ユーザー設定のリストを使いたいんです。
頑張ってできなかったので、そのあたりのことをご報告と、その先のアンサーが戴けたらと思います。
元の、ノードは、「Excel操作(ソート)」を使用しました。
これでは、特定のフィールドの昇順降順しか指定できません。
そこで、スクリプトで書き足せないかと調べて、次のサイトなどが参照になるかと思いました。
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