- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAで内容変更のたびに自動実行するには?)
エクセルVBAで自動実行する方法
このQ&Aのポイント
- エクセルVBAを使用して、sheet1かsheet2かsheet3の内容が変更されると自動的にマクロが実行される方法について教えてください。
- エクセルVBAを使って、sheet1とsheet2とsheet3の情報をsheet4にコピーするマクロを作成しましたが、どのようにしてそのマクロを自動実行させることができますか?
- エクセルVBAでBOOK1のsheet1とsheet2とsheet3の情報をsheet4にまとめるためのマクロを作成しました。しかし、sheet1かsheet2かsheet3の内容が変更されたときに自動実行されるようにする方法がわかりません。お手数ですが、教えていただけますか?
お礼
ありがとうございました。
補足
ありがとうございます。 Sub マクロ() Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") Workbooks("BOOK.xlsm").Worksheets("sheet2").Range("C1:BE100").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C51:BE150") Dim UsedCell As Range Dim Max_Row, RowCount As Integer Set UsedCell = ActiveSheet.UsedRange Max_Row = UsedCell.Cells(UsedCell.Count).Row Application.ScreenUpdating = False For RowCount = Max_Row To 1 Step -1 If Application.WorksheetFunction.CountA(Rows(RowCount)) = 0 Then Rows(RowCount).Delete End If Next Application.ScreenUpdating = True End Sub これを↓のように変更しましたが、sheet1やsheet2のセルの内容(文章、色など)を変更してもsheet3に反映されませんでした。 Private Sub Worksheet_Change(ByVal Target As Range) 'ここから下は変更はありません。 Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") Workbooks("BOOK.xlsm").Worksheets("sheet2").Range("C1:BE100").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C51:BE150") Dim UsedCell As Range Dim Max_Row, RowCount As Integer Set UsedCell = ActiveSheet.UsedRange Max_Row = UsedCell.Cells(UsedCell.Count).Row Application.ScreenUpdating = False For RowCount = Max_Row To 1 Step -1 If Application.WorksheetFunction.CountA(Rows(RowCount)) = 0 Then Rows(RowCount).Delete End If Next Application.ScreenUpdating = True End Sub