本文へスキップ

別館:エクセルQC館 別館:エクセル株式館

  1. トップページ>
  2. Tips>
  3. Excel2010、VBAで繰り返しが止まる時の対処方法

Tipstips

備忘録として、主にパソコン関係のTipsを記載して行きます。


新着情報
@UiPath、メモ
AOffice365、Excel:VBAで画面更新がチラツク時の対策
BOffice365、Excel:勝手に手動計算になる原因
COffice365、Excel:フィルターで3つ以上の条件にする方法
DOffice365、Excel:シート同士の違いを見つける方法

Excel2010、VBAで繰り返しが止まる時の対処方法

Excel2010は、手頃な価格で高機能な表計算ソフトです。
ファイル(ブック)には複数のシートを作成できて、色々な表やグラフを作れます。

しかし、Excel2010のVBAで繰り返しが止まる時が有ります。この対策として、繰り返しの途中に
DoEventsを追記すると良くなります。本ページでは、更に改良する方法を検討しました。使用したパソ
コンは、下記のソフトを使用していました。

OS       : Windows10(64bit)バージョン1909(OSビルド 18362.657)
表計算ソフト   : Excel2010(32bit)

以下、Excel2010、VBAで繰り返しが止まる時の対処方法を記載して行きます。

(項目1)
 ・Excel2010のVBAで繰り返しが止まる時が有ります。この対策として、繰り返しの途中に
  DoEventsを追記すると良くなります。本ページでは、更に改良する方法を検討しました。

(項目2)
 ・繰り返しの途中で毎回DoEventsを実行すると、実行速度が低下してしまいます。
 ・そこで、1回/100回の頻度でDoEventsを実行する様にします。
 ・また、進行状況が分かる様に、ステータスバーの表示も行いました。

(項目3)
 ・VBAコードは、以下の通りです。

  Sub test1()

  Dim i As Long

  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  Application.DisplayStatusBar = True

  i = 20
  Do Until Range("B" & i) = ""
    Range("C6:F16").Calculate
    Range("C16:F16").Select
    Selection.Copy
    Range("C" & i).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,_
    Transpose:=False
    i = i + 1

    '100ループに1回実行(フリーズ防止)
    If i Mod 100 = 0 Then
      'ステータスバーへの表示更新
      Application.StatusBar = "i=" & i & "/1000"
      'エクセルのイベント処理
      DoEvents
    End If

  Loop

  Application.StatusBar = False
  Application.Calculation = xlCalculationSemiautomatic
  Application.ScreenUpdating = True

  End Sub

(項目4)
 ・以上で、Excel2010、VBAで繰り返しが止まる時の対処方法は終了です。



contents

エクセル将棋館

日本国

地方都市


スポンサード リンク