この記事では、VBAマクロで画面の更新の停止(しない)方法【別シートへコピー、シートのデータ結合等を例に】について解説していきます。
ポイントとしては
ScreenUpdatingプロパティ、
Copyメソッド、
Merge関数を
使用することです。
下記の解説では完全な初心者でもわかりやすいように、あえて変数名をユニークな名称(例: aaaaavariableaaaaa)にしています。
これにより、理解を深めることができるでしょう。
それでは、詳しく見ていきましょう!
VBAマクロで画面の更新を停止する方法【別シートへすべてのデータをコピー】
それではまず、別シートへのデータコピー時に画面の更新を停止する方法について解説していきます。
Excelの操作を自動化する際、画面のちらつきを防ぐためには、ScreenUpdatingプロパティを適切に扱う必要があります。
Sub CopyDataWithoutScreenUpdate()
' ScreenUpdatingプロパティをFalseに設定して画面の更新を停止
Application.ScreenUpdating = False
' コピー先のシートを定義
Dim aaaaadestSheetaaaaa As Worksheet
Set aaaaadestSheetaaaaa = ThisWorkbook.Sheets("DestinationSheet")
' コピー元のデータ範囲を定義
Dim aaaaasourceRangeaaaaa As Range
Set aaaaasourceRangeaaaaa = ThisWorkbook.Sheets("SourceSheet").UsedRange
' データをコピー
aaaaasourceRangeaaaaa.Copy Destination:=aaaaadestSheetaaaaa.Range("A1")
' ScreenUpdatingプロパティをTrueに設定して画面の更新を再開
Application.ScreenUpdating = True
End Sub
Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。
コードのAlt+F8を押し、マクロ選択画面でCopyDataWithoutScreenUpdate関数を実行します。
この関数は、SourceSheetのすべてのデータをDestinationSheetのA1セルから開始する位置にコピーします。
ScreenUpdatingプロパティをFalseに設定することで、処理中の画面のちらつきを抑えることができます。
VBAマクロで画面の更新を停止する方法【ブック内のすべてのシートデータを1シートに結合を例に】
続いては、ワークブック内のすべてのシートデータを1つのシートに結合する際の画面更新の停止方法について解説していきます。
大量のデータを扱う際には、エクセルが重くなって止まる問題に対応できます!
Sub MergeSheetsWithoutScreenUpdate()
' ScreenUpdatingプロパティをFalseに設定して画面の更新を停止
Application.ScreenUpdating = False
' 結合データを格納するシートを作成
Dim aaaaamergeSheetaaaaa As Worksheet
Set aaaaamergeSheetaaaaa = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
aaaaamergeSheetaaaaa.Name = "MergedData"
' 各シートからデータをコピーして結合
Dim aaaaasheetaaaaa As Worksheet
For Each aaaaasheetaaaaa In ThisWorkbook.Sheets
If a
aaaasheetaaaaa.Name <> "MergedData" Then
aaaaasheetaaaaa.UsedRange.Copy Destination:=aaaaamergeSheetaaaaa.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
Next aaaaasheetaaaaa
' ScreenUpdatingプロパティをTrueに設定して画面の更新を再開
Application.ScreenUpdating = True
End Sub
Alt + F11にてVBE画面を開いて、上記コードをコピペしましょう。
コードのAlt+F8を押し、マクロ選択画面でMergeSheetsWithoutScreenUpdate関数を実行します。
この関数は、現在のワークブックに存在する全てのシートからデータを集め、新しく作成された”MergedData”というシートに結合します。
ScreenUpdatingプロパティを使用することで、結合処理中に画面が更新されることなく、スムーズにデータが一つのシートにまとまります。
まとめ VBAマクロで画面の更新しない方法【別シートへコピー、シートのデータ結合等を例に】
この記事を通じて、VBAマクロでの画面の更新を効率的に停止する方法をマスターすることで、より快適にExcelを使用することができるようになります。
合わせて、データのコピーと結合処理を自動化することで、作業効率が大幅に向上するでしょう。楽しいマクロライフをお楽しみください!