Attribute VB_Name = "Module1" Option Explicit ' Sub 実行速度の試験() Dim Sh As Worksheet Dim Rg As Range Dim MyRange As Range Dim MyStr As String Dim MyObj As Range Dim String型値 As String Dim Variant型値 As Variant Dim lRow As Long Dim lCol As Long Dim lMaxRow As Long Dim lMaxCol As Long Dim VariantAry As Variant Dim lX As Long Dim dtm開始time As Date Dim dtm終了time As Date Dim tmr開始 As Single Dim tmr終了 As Single Dim int繰返し回数 As Integer Set Rg = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell) Set Sh = ActiveSheet Set MyRange = Sh.Range(Sh.Cells(1, 1), Sh.Cells(Rg.Row, Rg.Column)) VariantAry = MyRange lMaxRow = UBound(VariantAry, 1) lMaxCol = UBound(VariantAry, 2) int繰返し回数 = 1 MyStr = Replace(MyRange.Address, "$", "") & ") セル値数=" & _ MyRange.Count & "×繰返し" & int繰返し回数 Debug.Print "≪範囲(" & MyStr & "回≫" Debug.Print "【開始】" '(ケース01) dtm開始time = Now: tmr開始 = Timer Debug.Print "(-01-) " & dtm開始time For lX = 0 To int繰返し回数 For lRow = 1 To lMaxRow For lCol = 1 To lMaxCol Variant型値 = VariantAry(lRow, lCol) String型値 = VariantAry(lRow, lCol) Next Next Next dtm終了time = Now: tmr終了 = Timer Debug.Print "(-01-) " & dtm終了time Debug.Print "◆Variant配列の複写" & " ---経過時間---> " & Format(tmr終了 - tmr開始, "0.00") '(ケース02) dtm開始time = Now: tmr開始 = Timer Debug.Print "(-02-) " & dtm開始time For lX = 0 To int繰返し回数 For Each MyObj In MyRange Variant型値 = MyObj.Value String型値 = MyObj.Value Next Next dtm終了time = Now: tmr終了 = Timer Debug.Print "(-02-) " & dtm終了time Debug.Print "◆Rang型Value値の複写" & " ---経過時間---> " & Format(tmr終了 - tmr開始, "0.00") '(ケース03) dtm開始time = Now: tmr開始 = Timer Debug.Print "(-03-) " & dtm開始time For lX = 0 To int繰返し回数 For Each MyObj In MyRange Variant型値 = MyObj.Text String型値 = MyObj.Text Next Next dtm終了time = Now: tmr終了 = Timer Debug.Print "(-03-) " & dtm終了time Debug.Print "◆Rang型Text値の複写" & " ---経過時間---> " & Format(tmr終了 - tmr開始, "0.00") '(ケース04) dtm開始time = Now: tmr開始 = Timer Debug.Print "(-04-) " & dtm開始time For lX = 0 To int繰返し回数 For Each MyObj In MyRange '処理なし Next Next dtm終了time = Now: tmr終了 = Timer Debug.Print "(-04-) " & dtm終了time Debug.Print "◆Rang型の空回し" & " ---経過時間---> " & Format(tmr終了 - tmr開始, "0.00") Debug.Print "【終了】" End Sub