++office2016のVBAでApplication.ScreenUpdatingを利用すると処理終了後にIMEが無効になるときがある。

Anonymous
2019-10-28T02:27:05+00:00

Application.ScreenUpdating = False

10秒ほどかかる大量の「Selection.Find.Replacement」を利用する処理

Application.ScreenUpdating = True

でなるVBAを実行させると、

1、実行中にWordのステータスバーの表示が停止されない(VBA処理の高速化を目的とする画面更新の停止がステータスバーまで効いていないという点ではバグではないか?)

2、処理が終了しWordに戻ってきたときに、IMEが無効となることがある。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

6 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-10-28T15:51:10+00:00

    Application.ScreenUpdating = False

    10秒ほどかかる大量の「Selection.Find.Replacement」を利用する処理

    Application.ScreenUpdating = True

    でなるVBAを実行させると、

    1、実行中にWordのステータスバーの表示が停止されない(VBA処理の高速化を目的とする画面更新の停止がステータスバーまで効いていないという点ではバグではないか?)

    2、処理が終了しWordに戻ってきたときに、IMEが無効となることがある。

    2、処理が終了しWordに戻ってきたときに、「IMEが無効となる」と「IME小窓が出現する」以外にWordの「挿入モード」が「上書きモード」に勝手に変わる現象が出現しました。

    VBAから「Application.ScreenUpdating」を外して実行して、判明したことを記載します。

    Application.ScreenUpdatingを利用するか否かに関わりなく

    WordのVBAで「置換のマクロ」を131回繰り返し(普段はもッと繰り返している)実行したことでこの現象が再現しました。

    「Selection.Find」を使わずに下記のような使い方をするとステータスバーに情報が表示されなくなることを知り、やってみました。上記の現象が再現しなくまりました。

    Set myRange = ActiveDocument.Content

     With myRange.Find

         .Text = "a"

         .Replacement.Text = "A"

     End With

    myRange.Find.Execute Replace:=wdReplaceAll

    どうやら頻度が減っただけで上記の現象が再現していました。何らかのバグでしたら改善をお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません