teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード修正

2020/04/11 12:17

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -2,22 +2,28 @@
2
2
 
3
3
  ```vba
4
4
  Sub 昇順()
5
- Application.ScreenUpdating = False
6
-
7
5
  Dim ws As Worksheet
8
- Set ws = Worksheets("Sheet3")
6
+ Set ws = Worksheets("Sheet1")
9
7
 
10
8
  Dim rng As Range
11
9
  Set rng = ws.Range("A1").CurrentRegion 'データ範囲取得
10
+
11
+ 'CustomOrder用文字列生成
12
+ Dim c As Range, CtmOrd As String
13
+ For Each c In rng.Columns(1).Cells
14
+ If InStr(CtmOrd & ",", "," & c.Value & ",") < 1 Then
15
+ CtmOrd = CtmOrd & "," & c.Value
16
+ End If
17
+ Next
18
+ CtmOrd = Mid(CtmOrd, 2)
12
19
 
13
20
  With ws.Sort
14
21
  .SortFields.Clear
15
- .SortFields.Add2 Key:=rng.Columns(1), CustomOrder:="田中,佐藤,伊藤"
22
+ .SortFields.Add Key:=rng.Columns(1), CustomOrder:=CVar(CtmOrd)
16
- .SortFields.Add2 Key:=rng.Columns(4)
23
+ .SortFields.Add Key:=rng.Columns(4)
17
24
  .SetRange rng
25
+ .Header = xlYes
18
26
  .Apply
19
27
  End With
20
-
21
- Application.ScreenUpdating = True
22
28
  End Sub
23
29
  ```