回答編集履歴

3

ソース修正

2020/04/02 01:09

投稿

yureighost
yureighost

スコア2183

test CHANGED
@@ -76,11 +76,13 @@
76
76
 
77
77
  **追記**
78
78
 
79
- 書いてしまってからなんですが少し不安定な方法のようです。
79
+ ~~書いてしまってからなんですが少し不安定な方法のようです。
80
80
 
81
81
  ユーザー設定リストを削除する前にブックを保存しておくと落ちるのは防げます。
82
82
 
83
- ただソートする時に保存されてしまうのでそこの動作に関してはご了承ください。
83
+ ただソートする時に保存されてしまうのでそこの動作に関してはご了承ください。~~
84
+
85
+ end-u様の教えてくださった方法でブック保存時の不具合の問題は解決しました。
84
86
 
85
87
  ```VBA
86
88
 
@@ -120,9 +122,9 @@
120
122
 
121
123
 
122
124
 
123
- 'ザー設定リスを削除前にブッを保存
125
+ 'ピボットテブルに設定されているソー条件のリア
124
126
 
125
- ThisWorkbook.Save
127
+ ThisWorkbook.Worksheets("ピボットテーブル").Sort.SortFields.Clear
126
128
 
127
129
 
128
130
 

2

ソース修正

2020/04/02 01:09

投稿

yureighost
yureighost

スコア2183

test CHANGED
@@ -71,3 +71,67 @@
71
71
  End Sub
72
72
 
73
73
  ```
74
+
75
+
76
+
77
+ **追記**
78
+
79
+ 書いてしまってからなんですが少し不安定な方法のようです。
80
+
81
+ ユーザー設定リストを削除する前にブックを保存しておくと落ちるのは防げます。
82
+
83
+ ただソートする時に保存されてしまうのでそこの動作に関してはご了承ください。
84
+
85
+ ```VBA
86
+
87
+ Application.DisplayAlerts = False
88
+
89
+
90
+
91
+ With ThisWorkbook.Worksheets("予定表")
92
+
93
+ pEndColumn = .Cells(2, .Columns.Count).End(xlToLeft).Column
94
+
95
+ '予定2行目の氏名順をリストで取得する
96
+
97
+ SortData = .Range(.Cells(2, 2), .Cells(2, pEndColumn))
98
+
99
+ End With
100
+
101
+
102
+
103
+ '取得したリストをユーザー設定リストに登録
104
+
105
+ Application.AddCustomList ListArray:=SortData
106
+
107
+
108
+
109
+ 'ユーザー設定リスト登録位置を取得
110
+
111
+ ocNum = Application.GetCustomListNum(SortData)
112
+
113
+
114
+
115
+ '登録したユーザー設定リストでピボットテーブルをソート
116
+
117
+ ThisWorkbook.Worksheets("ピボットテーブル").Range("$B$4").Sort Order1:=xlAscending, Type:=xlSortLabels, _
118
+
119
+ OrderCustom:=ocNum + 1, Orientation:=xlLeftToRight, SortMethod:=xlStroke
120
+
121
+
122
+
123
+ 'ユーザー設定リストを削除前にブックを保存
124
+
125
+ ThisWorkbook.Save
126
+
127
+
128
+
129
+ 'ユーザー設定リストを削除
130
+
131
+ Application.DeleteCustomList ocNum
132
+
133
+
134
+
135
+ Application.DisplayAlerts = True
136
+
137
+ ```

1

ソース修正

2020/04/01 06:42

投稿

yureighost
yureighost

スコア2183

test CHANGED
@@ -14,23 +14,21 @@
14
14
 
15
15
  Sub CommandButton3_Click()
16
16
 
17
- Dim DataS As Worksheet
18
17
 
19
- Dim ws As Worksheet
20
18
 
21
- Dim pvc As PivotCache
22
-
23
- Dim pvt As PivotTable
24
-
25
- Dim dEndRow As Long
19
+ ・・・
26
20
 
27
21
  Dim pEndColumn As Long
28
22
 
29
- Dim ocNum As Long
30
-
31
23
  Dim SortData As Variant
32
24
 
25
+ ・・・
26
+
33
27
 
28
+
29
+ pvt.AddDataField pvt.PivotFields("執務時間"), "合計 / 執務時間", xlSum
30
+
31
+
34
32
 
35
33
  With ThisWorkbook.Worksheets("予定表")
36
34
 
@@ -47,74 +45,6 @@
47
45
  '取得したリストをユーザー設定リストに登録
48
46
 
49
47
  Application.AddCustomList ListArray:=SortData
50
-
51
-
52
-
53
- Set ws = Sheets.Add
54
-
55
- ActiveSheet.Name = "ピボットテーブル"
56
-
57
- Set DataS = ThisWorkbook.Worksheets("日報")
58
-
59
-
60
-
61
- dEndRow = DataS.Cells(DataS.Rows.Count, 2).End(xlUp).Row
62
-
63
- Set pvc = ActiveWorkbook.PivotCaches.Create( _
64
-
65
- SourceType:=xlDatabase, _
66
-
67
- SourceData:=DataS.Range("A1:K" & dEndRow), _
68
-
69
- Version:=xlPivotTableVersion15)
70
-
71
-
72
-
73
- Set pvt = pvc.CreatePivotTable( _
74
-
75
- TableDestination:=ws.Name & "!R3C1", _
76
-
77
- TableName:="ピボットテーブル1", _
78
-
79
- DefaultVersion:=xlPivotTableVersion15)
80
-
81
-
82
-
83
- With pvt.PivotFields("略号")
84
-
85
- .Orientation = xlRowField
86
-
87
- .Position = 1
88
-
89
- End With
90
-
91
-
92
-
93
-
94
-
95
- With pvt.PivotFields("日付")
96
-
97
- .Orientation = xlRowField
98
-
99
- .Position = 2
100
-
101
- End With
102
-
103
-
104
-
105
-
106
-
107
- With pvt.PivotFields("氏名")
108
-
109
- .Orientation = xlColumnField
110
-
111
- .Position = 1
112
-
113
- End With
114
-
115
-
116
-
117
- pvt.AddDataField pvt.PivotFields("執務時間"), "合計 / 執務時間", xlSum
118
48
 
119
49
 
120
50