Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


65 / 13645 ツリー ←次へ | 前へ→

【82128】カスタムリストでの並び替えについて ken 23/2/26(日) 9:32 質問[未読]
【82129】Re:カスタムリストでの並び替えについて マナ 23/2/27(月) 14:58 発言[未読]
【82130】Re:カスタムリストでの並び替えについて ken 23/2/28(火) 7:13 お礼[未読]
【82133】Re:カスタムリストでの並び替えについて ken 23/3/10(金) 19:13 質問[未読]
【82134】Re:カスタムリストでの並び替えについて マナ 23/3/10(金) 23:17 発言[未読]
【82135】Re:カスタムリストでの並び替えについて ken 23/3/11(土) 10:30 お礼[未読]

【82128】カスタムリストでの並び替えについて
質問  ken  - 23/2/26(日) 9:32 -

引用なし
パスワード
   何度か質問してお世話になってます。
今回もどうしても解決しないので投稿しました。

データベースは1000行くらいで20列あります。
並び替えのリストは30項目位あり変動します。
シート3のデータをシート2のリストで並び変えた後で
保存しようとするとエクセル自体が終了してしまいます。
他のPCでやっても同様です。
最後の  Application.DeleteCustomList ListNum:= _
  Application.CustomListCount
をコメントブロックすると問題なく保存できますがリストが
残っている状態です。
マクロは下記です。
どなたか宜しくお願い致します。

Sub Sample()
  Dim lst As Variant
  With Sheets("Sheet2")
    lst = WorksheetFunction.Transpose _
    (Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp)))
  End With
  Application.AddCustomList ListArray:=lst
  With Sheets("Sheet3")
    .Range("A1").CurrentRegion.Sort Key1:= _
      .Columns("A"), Order1:=xlAscending, _
      OrderCustom:=Application.CustomListCount + 1, Header:=xlYes
  End With
  Application.DeleteCustomList ListNum:= _
  Application.CustomListCount
End Sub

【82129】Re:カスタムリストでの並び替えについて
発言  マナ  - 23/2/27(月) 14:58 -

引用なし
パスワード
   ▼ken さん:

2007以降なら、これを使用するのが簡単ではありませんか。
ht tp://officetanaka.net/excel/vba/tips/tips189.htm

【82130】Re:カスタムリストでの並び替えについて
お礼  ken E-MAIL  - 23/2/28(火) 7:13 -

引用なし
パスワード
   ▼マナ さん:
>▼ken さん:
>
>2007以降なら、これを使用するのが簡単ではありませんか。
>ht tp://officetanaka.net/excel/vba/tips/tips189.htm

ご教授有難う御座います。
試してみます。

【82133】Re:カスタムリストでの並び替えについて
質問  ken E-MAIL  - 23/3/10(金) 19:13 -

引用なし
パスワード
   ▼マナ さん:
>▼ken さん:
>
>2007以降なら、これを使用するのが簡単ではありませんか。
>ht tp://officetanaka.net/excel/vba/tips/tips189.htm

お世話になります。
リストをカスタムオーダーに入れてみましたが
エラーになってしまいます。

マクロは下記です。
Sub Sample_2()
  Dim lst As Variant
  With Sheets("Sheet2")
    lst = WorksheetFunction.Transpose _
    (Range(.Cells(2, 2), .Cells(Rows.Count, 2).End(xlUp)))
  End With
  With Sheets("Sheet3")
    .SortFields.Clear
    .SortFields.Add2 Key:=Range("A1"), CustomOrder:=lst
    .SetRange Range("A1").CurrentRegion
    .Header = xlYes
    .Apply
  End With
  End Sub

【82134】Re:カスタムリストでの並び替えについて
発言  マナ  - 23/3/10(金) 23:17 -

引用なし
パスワード
   ▼ken さん:

こうでは?

  With Sheets("Sheet3").Sort
    .SortFields.Clear
    .SortFields.Add2 Key:=Range("A1"), CustomOrder:=Join(lst, ",")

【82135】Re:カスタムリストでの並び替えについて
お礼  ken  - 23/3/11(土) 10:30 -

引用なし
パスワード
   ▼マナ さん:
>▼ken さん:
>
>こうでは?
>
>  With Sheets("Sheet3").Sort
>    .SortFields.Clear
>    .SortFields.Add2 Key:=Range("A1"), CustomOrder:=Join(lst, ",")

有難う御座いました。
ちゃんと並び替え出来ました。
配列は今勉強をはじめたばかりなので参考になりました。
もっと勉強します。

65 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free