http://officetanaka.net/excel/vba/speed/s2.htm https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.copy Private Sub CommandButton1_Click() Dim sh1 As Worksheet Dim sh2 As Worksheet Dim rg1 As Range Dim rg2 As Range Set sh1 = ThisWorkbook.Sheets("MENU") Set sh2 = Workbooks("Book1").Sheets("Sheet1") Sheets("MENU").Cells(14, 3).Copy Workbooks("Book1").Sheets("Sheet1").Cells(14, 1) sh1.Cells(14, 5).Copy sh2.Cells(14, 5) Set rg1 = ActiveSheet.Range("e13:f13") Set rg2 = Workbooks("Book1").Sheets("Sheet1").Range("b1") rg1.Copy rg2 Set rg1 = ActiveSheet.Range("こぴ") rg1.Copy Workbooks("Book1").Sheets("Sheet1").Range("c4") End Sub ---------------------------------------------------------------- ■コピー処理に失敗した場合、一定時間待機後リトライする処理を入れるこ Dim copyRetryCount As Integer:copyRetryCount = 10 'リトライ回数 'エラー時はリトライ処理に飛ぶ On Error GoTo CopyRetry '///////// 'コピー処理 '///////// 'エラー処理を解除 On Error GoTo 0 Exit Sub 'リトライ処理に飛ぶ前にメソッドから抜ける 'リトライ処理 CopyRetry: '一定時間待機後、エラー直前の処理に飛ぶ copyRetryCount = copyRetryCount - 1 If copyRetryCount < 1 Then 'リトライ回数が0の場合は、エラー処理を解除 On Error GoTo 0 End If '100ミリ秒 経過後再試行 Application.Wait [Now()] + 100 / 86400000 DoEvents Resume ■表全体を簡単に取得する「アクティブセル領域」 Range("A2").CurrentRegion 「Ctrl + Shift + :」 ←ショートカット ■ワークシート.AutoFilter.Range キレイにフィルターがかかっているなら、こっちを使いましょう。 オートフィルターのかかっているエリア全体を取得できます。 起点となるセルを探さなくてもいい ■メインとなるプロシージャの最初と最後に書いておくもの ☆最初 With Application .ScreenUpdating = False '画面遷移off .EnableEvents = False 'イベントの発生を停止(無限Loop等回避) .Calculation = xlCalculationManual '自動計算off .DisplayAlert = false '画面アラートoff End With ☆最後 With Application .ScreenUpdating = True .EnableEvents = True .Calculation = xlCalculationAutomatic .DisplayAlert = true .CutCopyMode = false 'コピペの後を消す End With ■Range ・固定位置のセル Range("B2") ・セル範囲(複数セル) Range("A1:C5") Range("1:5") Range("A:C") ・名前定義 Range("名前定義の名前") ■Cell ・1つのセル Cells(5, 3) Cells(5, "C") ・セル範囲(複数セル) Worksheets("sheet1").Range(Cells(行, 列), Cells(行, 列))---[Range]&[Cells] は要【sheet指定】 ・複数行全体、複数列全体の指定 Range(Rows(1), Rows(5)) Range(Columns(1), Columns(3)) ■一番下のセル '作業シートの最終行を取得 Selection.SpecialCells(xlCellTypeLastCell).Select