Excel

【Excel】VBAマクロで画面の更新の停止(しない)方法【別シートへコピー、シートのデータ結合等を例に】

当サイトでは記事内に広告を含みます。

この記事では、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を使用することができるようになります。

合わせて、データのコピーと結合処理を自動化することで、作業効率が大幅に向上するでしょう。楽しいマクロライフをお楽しみください!