実行に数分から 1 時間かかる Excel VBA マクロがいくつかあります。実行の最後に、一連の並べ替えを行います。問題は、Excel にフォーカスがない場合 (つまり、別のウィンドウで何かをしている場合)、問題があり、Excel を閉じて再度開く必要があることです。何が問題なのかはわかりませんが、Sort.Apply を実行しようとすると発生することはわかっています。とにかく、Excelにフォーカスがあるかどうかを確認できますか?そうでない場合は、フォーカスを与えるか、チェックボックスをポップアップしますか?
更新:これがコードです。テストしたところ、失敗しました。エラーは、「オブジェクト 'Sort' のメソッド 'Apply' が失敗しました」、「実行時エラー '-2147417848 (80010108)':」です。
With rws.Sort
.SortFields.Clear
.SortFields.Add Key:=Range("A7:A" & i _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range("C7:C" & i _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Range("A6:K" & i)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
.SortFields.Clear
End With
i
シート内の数値から、またはソートの直前に取得される、ソート範囲の下限を持つ変数です。
毎回それを得るとは思いませんが、焦点を合わせ続ける以外にそれを防ぐ方法がわかりません. 私が今行っている方法は、ソート中であることをメッセージボックスに警告させることですが、これを完全に自動化しようとしているので、何か他のことをする必要があります.
更新:これが私の更新されたコードです。
With rws.Sort
.SortFields.Clear
.SortFields.Add Key:=rws.Range("A7:A" & i _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=rws.Range("C7:C" & i _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange rws.Range("A6:K" & i)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
.SortFields.Clear
End With