我在下面编写了代码,该代码工作正常,但它需要永远,看起来好像Excel有癫痫发作。
对于史前较少的东西的任何帮助都会非常感激。
Sub Data()
Sheets("2").Unprotect "Joe"
Worksheets("3").Range("a").Copy
Worksheets("2").Range("D10").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("b").Copy
Worksheets("2").Range("L10").PasteSpecial Paste:=xlPasteValues
Worksheets("2").Range("L18").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("c").Copy
Worksheets("2").Range("D11").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("d").Copy
Worksheets("2").Range("L11").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("e").Copy
Worksheets("2").Range("D17").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("f").Copy
Worksheets("2").Range("L17").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("g").Copy
Worksheets("2").Range("D18").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("h").Copy
Worksheets("2").Range("D19").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("i").Copy
Worksheets("2").Range("L19").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("j").Copy
Worksheets("2").Range("D20").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("k").Copy
Worksheets("2").Range("E22").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("l").Copy
Worksheets("2").Range("E23").PasteSpecial Paste:=xlPasteValues
Worksheets("3").Range("m").Copy
Worksheets("2").Range("E24").PasteSpecial Paste:=xlPasteValues
End Sub
答案 0 :(得分:2)
Sub Data()
Dim rng As Range
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
Sheets("2").Unprotect "Joe"
With Worksheets("2")
Set rng = Range("a")
.Range("D10").Resize(rng.Rows.Count, rng.Columns.Count).Value2 = rng.Value2
Set rng = Range("b")
.Range("L10").Resize(rng.Rows.Count, rng.Columns.Count).Value2 = rng.Value2
'...and so on
End With
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
请注意,因为您正在使用a,b,c的范围名称,所以除非它们是本地范围的,否则不需要使用工作表名称限定它们。
答案 1 :(得分:1)
您还可以将目标单元格的值设置为等于原始单元格的值,而不是复制粘贴。例如:
Worksheets("2").Range("D10").Value = Worksheets("3").Range("a").Value
要防止在Excel的应用程序窗口中出现类似行为,请按照Excelosaurus的建议进行操作,并在宏的开头关闭屏幕更新。 (并确保在最后重新开启)。
答案 2 :(得分:0)
将Application.ScreenUpdating = False
放在子标题的开头,将Application.ScreenUpdating = True
放在最后。