[[20220905182629]] 『VBAの並べ替え引数をユーザーが任意に入力した順煤x(どっこいおむすび) ページの最後に飛ぶ

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

 

『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

WorksheetFunction.TextJoin(",", True, Diff_ws.Range("B11:B17"))

(マナ) 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.