ExcelVBAにてご教授をお願い致します。別シートへのコピぺでデータが多いため、めちゃくちゃ時間が掛かるのですが一瞬で終わる方法はありますか?

ExcelVBAにてご教授をお願い致します。別シートへのコピぺでデータが多いため、めちゃくちゃ時間が掛かるのですが一瞬で終わる方法はありますか? Sub 転記() Dim i As Variant Dim s1 As Worksheet Dim s2 As Worksheet Set s1 = Worksheets("Sheet1") Set s2 = Worksheets("Sheet2") Application.ScreenUpdating = False s2.Range("A5:F5" & pri.Cells(Rows.Count, "A").End(xlUp).Row).ClearContents s1.Range("A4:A" & s1.Cells(Rows.Count, "A").End(xlUp).Row).Copy s2.Range("A5") s1.Range("C4:C" & s1.Cells(Rows.Count, "C").End(xlUp).Row).Copy s2.Range("B5") s1.Range("D4:D" & s1.Cells(Rows.Count, "D").End(xlUp).Row).Copy s2.Range("C5") s1.Range("B4:B" & s1.Cells(Rows.Count, "B").End(xlUp).Row).Copy s2.Range("D5") s1.Range("K4:K" & s1.Cells(Rows.Count, "K").End(xlUp).Row).Copy s2.Range("E5") s1.Range("E4:E" & s1.Cells(Rows.Count, "E").End(xlUp).Row).Copy s2.Range("F5") Application.ScreenUpdating = True End Sub

Excel | Visual Basic14閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

値のみコピーする場合です。 >s1.Range("A4:A" & s1.Cells(Rows.Count, "A").End(xlUp).Row).Copy s2.Range("A5") >s1.Range("C4:C" & s1.Cells(Rows.Count, "C").End(xlUp).Row).Copy s2.Range("B5") >s1.Range("D4:D" & s1.Cells(Rows.Count, "D").End(xlUp).Row).Copy s2.Range("C5") >s1.Range("B4:B" & s1.Cells(Rows.Count, "B").End(xlUp).Row).Copy s2.Range("D5") >s1.Range("K4:K" & s1.Cells(Rows.Count, "K").End(xlUp).Row).Copy s2.Range("E5") >s1.Range("E4:E" & s1.Cells(Rows.Count, "E").End(xlUp).Row).Copy s2.Range("F5") を Dim v As Variant v = s1.Range("A4:A" & s1.Cells(Rows.Count, "A").End(xlUp).Row).Value: s2.Range("A5").Resize(UBound(v, 1), 1) = v v = s1.Range("C4:C" & s1.Cells(Rows.Count, "C").End(xlUp).Row).Value: s2.Range("B5").Resize(UBound(v, 1), 1) = v v = s1.Range("D4:D" & s1.Cells(Rows.Count, "D").End(xlUp).Row).Value: s2.Range("C5").Resize(UBound(v, 1), 1) = v v = s1.Range("B4:B" & s1.Cells(Rows.Count, "B").End(xlUp).Row).Value: s2.Range("D5").Resize(UBound(v, 1), 1) = v v = s1.Range("K4:K" & s1.Cells(Rows.Count, "K").End(xlUp).Row).Value: s2.Range("E5").Resize(UBound(v, 1), 1) = v v = s1.Range("E4:E" & s1.Cells(Rows.Count, "E").End(xlUp).Row).Value: s2.Range("F5").Resize(UBound(v, 1), 1) = v にしたらどうなりますか。

ThanksImg質問者からのお礼コメント

早急なご回答有難うございました!!

お礼日時:10/30 13:33

その他の回答(1件)

0

どのくらい早くなるかは不明ですが・・・ あるいは、、、 .ScreenUpdating に加え Application.Calculation = xlCalculationManual Application.EnableEvents = False (処理) Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True を入れると早くなるかもです。 ならなかったらごめんなさい。