回答編集履歴
1
コード修正
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("
|
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.
|
22
|
+
.SortFields.Add Key:=rng.Columns(1), CustomOrder:=CVar(CtmOrd)
|
16
|
-
.SortFields.
|
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
|
```
|