dポイントプレゼントキャンペーン実施中!

必要データを別bookから転記した後、所属支店・氏名アイウエ順並び替えを1度の操作で完了させたいのですが、並び替えができません。(完了するのですが、並び替えが出来ていません)
VBA初心者です。ご教示よろしくお願いします。


(途中から記します)
i = 2
Do While Range("B" & i).Value <> ""
On Error Resume Next
With ThisWorkbook.Worksheets("①受講者リスト")
.Cells(i, 4).Value = Application.WorksheetFunction.VLookup(.Cells(i, 2).Value, SerchArea, 3, 0)
<<幾つかの処理があります>>
End With
i = i + 1
Loop
ActiveSheet.Sort.SortFields.Add _
Key:=Range("G2") _
, Order:=xlAscending, CustomOrder:= _
"北海道,東北,北関東,川越,東関東" _
, DataOption1:=xlSortNormal
ActiveSheet.Sort.SortFields.Add _
Key:=Range("D2") _
, Order:=xlAscending
With ActiveWorkbook.Worksheets("①受講者リスト").Sort
.SetRange Range("B1:Y41")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

質問者からの補足コメント

  • うーん・・・

    失礼しました。「ふりがな」の並び替えを外していました。
    ただ、このままでも、所属支店の並び替えも全くされず、もとの順番のまま表示が変わらないので 並び替えのVBA記述が どこかしらおかしいのだと思うのですが、、、

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/12/05 15:22
  • ありがとうございます。
    作業Bookには、予め 「A列:項番 B列:社員番号 C列:氏名」が入力されており、
    別Bookから  「D列:ヨミカナ」~Y列までのデータを取得後、「G列:配属支店」基準に並び替えを行い、「D列:ヨミカナ」昇順を行いたいと思います。(最初の質問で、D列並び替え記述を省いてました)

    どうぞよろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/12/05 15:56
  • ラックさん、ありがとうございます。
    ①表は完成しています。 
    ②A列は項番ですので、並び替えはB列~Y列で行いたいです。
    ③タイトルは1行目にあります。
    ④G列:配属支店が優先します。

    この後、作業ができないため、続きは明日でも結構です。 よろしくお願いします。

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/12/05 17:11
  • へこむわー

    ラックさん、何度もありがとうございます。
    アドバイスの通り、VBAを作り直してみました。「①受講者リスト」を確実にアクティブにするために、次のようにしてみましたが、やはり並び替えができませんでした。

    Sheets("①受講者リスト").Activate   
    ActiveSheet.Sort.Sortfields.Clear
    ~以下、アドバイスの通り

    No.5の回答に寄せられた補足コメントです。 補足日時:2017/12/06 14:36
  • うれしい

    すみません、ラックさん、できました!!
    アクティブにさせるところを
    ThisWorkbook.Worksheets(”①受講者リスト").Activate としたら ソートされました。

      補足日時:2017/12/06 14:43

A 回答 (6件)

もしかしてですが並べ替えるシートが「①受講者リスト」だけど、そのシートがアクティブではない。

と言う事は無いですよね?
この回答への補足あり
    • good
    • 0
この回答へのお礼

ラックさん、何度も有り難うございました。何となくお名前に記憶があったのですが、別の件でも回答を寄せてくださってました。 何度も助けてくださって、(途中で投げることもなく) 有り難うございました。 <(_ _)>

お礼日時:2017/12/06 14:48

「Sheets("①受講者リスト").Activate」ではなく「Sheets("①受講者リスト").Select」としてもダメで

すか?
    • good
    • 0

「Loop」の次の行からを以下に変更してみてください。


--------------------------------------------------------------------------------
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add _
Key:=Range("G2"), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
CustomOrder:="北海道,東北,北関東,川越,東関東", _
DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add _
Key:=Range("D2"), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Columns("B:Y")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
--------------------------------------------------------------------------------
    • good
    • 0

「配属支店名」はオリジナルの順番に並び替えるのですよね?


それですと2回に分けてソートしないとダメですね。

① 作業Book上には「Loop」の次の行の時点でソート出来ていない表は出来ているのですよね?
② その範囲が「B1:Y41」でしょうか?
③ そこにはタイトル行は有るのでしょうか?
④ ソートの優先順位は「G列:配属支店」の方が「D列:ヨミカナ」より高いですよね?
この回答への補足あり
    • good
    • 0

レイアウトやどこの列を基準にどのようにソートしたいのかを提示していただけないと、処理出来ていないコードを示されただけでは、こちらではどう対処していいか判断できません。

よろしくお願いいたします。
この回答への補足あり
    • good
    • 0

レイアウトなどよく判りませんが「ふりがな」の欄は「所属支店・氏名」欄とは別に有るのでしょうか?


もし無ければ「所属支店・氏名」欄にセットされている「ふりがな」もセットしないとダメです。
セルのコピー&ペーストでは「ふりがな」もコピーされますが、セルの「値(Value)」の代入の場合は「ふりがな」は含まれません。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!