この記事ではVBAマクロで画面の更新をしない(停止)方法【最終行までコピーや足し算を例に】について解説していきます。
ポイントとしては
`ScreenUpdating`プロパティと
`Range`オブジェクト
の活用です。
初心者の方にもわかりやすいように、変数名を少々変わった日本語ローマ字表記にしています。
実際の使用時には、適切な英語表記の変数名に変更してご利用ください。それでは詳しく見ていきましょう!
VBAマクロで画面の更新をしない(停止)方法【A列のデータをC列に最終行までコピーを例に】【CopyToLastRow関数】
それではまず、画面を更新しないで、A列のデータをC列に最終行までコピーする方法について解説していきます。
大量のデータを扱う際に画面のちらつきを防ぐことで、作業の効率化・速度向上が図れます。
Sub CopyToLastRow()
Dim saishuuGyou As Long
Dim i As Long
With Application
.ScreenUpdating = False ' 画面の更新を停止
saishuuGyou = .Cells(.Rows.Count, "A").End(xlUp).Row ' A列で最後の行を取得
For i = 1 To saishuuGyou
.Cells(i, "C").Value = .Cells(i, "A").Value ' A列からC列へコピー
Next i
.ScreenUpdating = True ' 画面の更新を再開
End With
End Sub
Alt + F11でVBE画面を開いて、上記のコードをコピペしましょう。コードの実行はAlt+F8を押し、マクロ選択画面で`CopyToLastRow`関数を実行します。このマクロはA列のデータを最終行までC列にコピーする作業を画面の更新なしで行い、マクロの実行をスムーズかつ高速にします。
VBAマクロで画面の更新をしない(停止)方法【A列とB列のデータ合計をC列に:最終行まで繰り返し】【SumColumnsToLastRow関数】
続いては、A列とB列のデータ合計をC列に最終行まで繰り返し記入するマクロについて解説していきます。
こちらも処理速度向上・遅くてエクセルが止まってしまう際におすすめです!
Sub SumColumnsToLastRow()
Dim saishuuGyou As Long
Dim i As Long
With Application
.ScreenUpdating = False ' 画面の更新を停止
saishuuGyou = .Cells(.Rows.Count, "A").End(xlUp).Row ' A列で最後の行を取得
For i = 1 To saishuuGyou
.Cells(i, "C").Value = .Cells(i, "A").Value + .Cells(i, "B").Value ' A列とB列を合計してC列に記入
Next i
.ScreenUpdating = True ' 画面の更新を再開
End With
End Sub
Alt +F11でVBE画面を開いて、上記のコードをコピペしましょう。
実行はAlt+F8を押し、マクロ選択画面で`SumColumnsToLastRow`関数を実行します。
このコードは、A列とB列を合計してC列に入力する作業を画面の更新を抑えながら効率よく行います。
まとめ VBAマクロで画面の更新の停止方法【最終行までコピーや足し算を例に】
以上で、ExcelのVBAマクロを用いて画面の更新を停止する方法と、実際に最終行までデータをコピー、合計する処理の例を学びました。
`ScreenUpdating`プロパティと適切なループ構造を活用することで、Excel作業の効率を飛躍的に向上させることができます。
それではExcelプロセスの効率化を楽しみましょう!