Excel (VBA) |
![]() ![]() |
(Windows 10 Pro : Excel 2010)
CustomOrder実行後、Excel操作で保存エラーが出る
投稿日時: 18/03/29 11:34:30
投稿者: Armal
|
---|---|
VBAにてユーザ設定リストに追加した順に並び替えしました。 並び替え自体は成功するのですが、VBAから脱してExcelのツールバーから保存しようとすると「Microsoft Excelにより回復しています」「Microsoft Excelは動作を停止しました」というメッセージが順次表示され、変更情報が保存されません。 どなたか対応方法がわかれば教えて下さい。
Private Sub UserForm_Initialize() Dim ws_obj As Object, ws_now As Object Dim icnt As Integer, vcnt Dim vstr() Set ws_now = ActiveSheet Set ws_obj = Worksheets("Master") ws_obj.Activate With ws_obj .Range("都道府県").Select ReDim vstr(Selection.Count - 1) icnt = 0 For Each vcnt In Selection vstr(icnt) = vcnt.Value icnt = icnt + 1 Next vcnt Application.AddCustomList listarray:=vstr '並び替え用ユーザ設定登録 sortNo1 = Application.GetCustomListNum(vstr) '上記アクセス番号を保存 ' .Range("八地方区分").Select Erase vstr ReDim vstr(Selection.Count - 1) icnt = 0 For Each vcnt In Selection vstr(icnt) = vcnt.Value icnt = icnt + 1 Next vcnt Application.AddCustomList listarray:=vstr '並び替え用ユーザ設定登録 sortNo2 = Application.GetCustomListNum(vstr) '上記アクセス番号を保存 End With ws_now.Activate End Sub 5.UserForm上に配したコマンドボタンにて並び替えを実施 Private Sub CommandButton1_Click() Dim ws_obj As Object Set ws_obj = Worksheets("fruits") With ws_obj .Activate .Range("Table").Select .Sort.SortFields.Clear .Sort.SortFields.Add Key:=Range("E3") _ , CustomOrder:=sortNo1 ' , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .Sort.SortFields.Add Key:=Range("D3") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ' , CustomOrder:=sortNo2 End With With ws_obj.Sort .SetRange Range("Table") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub 3.処理終了後フォームを閉じる時にユーザ登録リストから追加したリストを削除 Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Application.DeleteCustomList (sortNo2) Application.DeleteCustomList (sortNo1) End Sub CustomOrderではなくOrderで並び替えると正常に保存できました。 なお、並び替えるシートの情報は以下のようなものです。 A B C D E F G No 品名 英名 主産地 産地地区 開始月 終了月 1 あんず apricot 長野県 中部 6 7 2 いちご strawberry 栃木県 関東 12 4 3 いちじく fig 愛知県 中部 7 10 4 梅 plum 和歌山県 近畿 5 6 5 オリーブ olive 香川県 四国 8 9 6 オレンジ orange 広島県 中国 1 7 7 柿 persimmon 和歌山県 近畿 10 11 10 すいか water melon 熊本県 九州 5 8 11 梨 pear 千葉県 関東 8 10 12 パイナップル pine apple 沖縄県 九州 7 9 14 ぶどう grape 山梨県 中部 8 10 15 プルーン prune 長野県 中部 6 8 16 みかん mandarin 和歌山県 近畿 12 2 17 メロン melon 茨城県 関東 4 9 18 桃 peach 山梨県 中部 7 8 19 ゆず yuzu 愛媛県 四国 11 2 20 洋梨 pear 山形県 東北 8 10 21 ライチ lychee 鹿児島県 九州 6 8 22 りんご apple 青森県 東北 10 12 |
![]() |
投稿日時: 18/03/29 14:57:23
投稿者: Suzu
|
---|---|
原因は明確には判りません。
|
![]() |
投稿日時: 18/03/29 15:32:10
投稿者: Armal
|
---|---|
Suzuさん
|
![]() |
投稿日時: 18/03/29 16:08:51
投稿者: Armal
|
---|---|
ちなみに、項目数が少ないリスト内容は以下です。
八地方区分 北海道 東北 関東 中部 近畿 中国 四国 九州 海外 |
![]() |
投稿日時: 18/03/29 16:11:19
投稿者: Suzu
|
---|---|
やはりVBAに問題がありそうですね。
|
![]() |
投稿日時: 18/03/30 10:36:24
投稿者: Armal
|
---|---|
Suzuさん
引用: |
![]() |
投稿日時: 18/03/30 12:25:44
投稿者: Armal
|
---|---|
Suzuさん
|
![]() |
投稿日時: 18/03/30 14:59:56
投稿者: Suzu
|
---|---|
listarray:=range("都道府県")
|
![]() |
投稿日時: 18/03/30 15:37:37
投稿者: mattuwan44
|
---|---|
>配列変数にしないでcustomorderが実行できるのであればそれにこした事はないのですが...
|