[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAの並べ替え引数をユーザーが任意に入力した順番にしたい』(どっこいおむすび)
差分チェックブックの実行シートの指定のセル範囲にユーザーが任意で入力した所属の順番に、
工数投入状況ブックのサマリシートのデータをを並べ替える処理がしたいです。
(データ範囲はヘッダー含めA8セルからあります)
↓のコードでは並べ替えできませんでした。
どなたか良い方法を教えてください。
sub 部署を任意に並べ替え
Dim Diff_bk ,NW_bk As Workbook Dim Diff_ws ,NW_ws As Worksheet
Set Diff_bk = Workbooks("差分チェックver1.xlsm") Set Diff_ws = Diff_bk.Sheets("実行") Set NW_bk = Workbooks("工数投入状況.xlsx") Set NW_ws = NW_bk.Sheets("サマリ")
’任意に並べ替えした部署を変数に入れる
With Diff_ws aa = .Range("B11") bb = .Range("B12") cc = .Range("B13") dd = .Range("B14") ee = .Range("B15") ff = .Range("B16") gg = .Range("B17") End With
With Summary_ws MaxRow = .Cells(Rows.Count, 1).End(xlUp).Row MaxCol = .Cells(9, 1).End(xlToRight).Column With .Sort .SortFields.Clear .SortFields.Add2 Key:=Range("A8"), CustomOrder:= _ "aa,bb,cc,dd,ee,ff,gg" .SetRange Range(Cells(8, 1), Cells(MaxRow, MaxCol)) .Header = xlYes .Apply End With End With
end sub
< 使用 Excel:Office365、使用 OS:Windows10 >
With Summary_wsではなくWith NW_wsです。 しかしこれでも並べ替えできません。 (どっこいおむすび) 2022/09/05(月) 18:57
(マナ) 2022/09/05(月) 19:18
.SortFields.Add2 Key:=Range("A8"), CustomOrder:= _ "aa,bb,cc,dd,ee,ff,gg"
""で囲むと、変数ではなく「aa,bb,cc,dd,ee,ff,gg」という文字列です。 変数は""の外に出しましょう。
.SortFields.Add2 Key:=Range("A8"), CustomOrder:= _ aa & "," & bb & "," cc & "," dd & "," ee & "," ff & "," gg
ただ、これは面倒なので、マナさんの回答のようにTextJoin関数を使うと 同じ結果になります。
(hatena) 2022/09/05(月) 19:25
Dim myOrder As String myOrder = WorksheetFunction.TextJoin(",", True, Range("B11:B30"))
として、
.SortFields.Add2 Key:=Range("A8"), CustomOrder:=CVar(myOrder)
これで、どうでしょうか。
(マナ) 2022/09/05(月) 19:30
hatena様のご指摘内容も理解いたしました。
どうもありがとうございました。
(どっこいおむすび) 2022/09/05(月) 20:30
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.