【发布时间】:2017-12-29 05:29:07
【问题描述】:
我正在复制值作为一个子流程的一部分,并通过用户窗体上的更新按钮粘贴值。
复制值:
Private Sub Month1_Click()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Dim wkb As Workbook
Dim wks As Worksheet
Set wkb = Workbooks.Open("Place on drive")
Set wks = wkb.Sheets("Training1")
wks.Range("Start:Finish").Copy
wkb.Close
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True
Application.ScreenUpdating = True
End Sub
在当前工作表中粘贴值:
Private Sub UpdateActuals_Click()
For i = 1 To 12
If Me.Controls("Month" & i).Value = True Then
ThisWorkbook.Sheets("2017 Actuals").Range(i+1, 5).PasteSpecial xlPasteValues
End If
Next i
End Sub
如果我将“i+1, 5”替换为“B5”,则会出现错误
“Range 类的PasteSpecial 方法失败”。
我觉得好像在一个子流程中复制的值没有被带到第二个,对吗?
另外,鉴于我在不同的地方有 12 个月(12 个文件)无法更改位置,我该如何减少处理时间...
【问题讨论】:
-
1) 复制 |粘贴应在同一模块中完成。在第一个 sub 中完成复制后,一旦 sub 结束,它就会被清除。 2) 我如何减少处理时间 - 请将您的问题限制在一个特定的问题上,这样对每个人都更有帮助。 (请参阅How to Ask 了解更多信息)
-
另外,您可以使用简单的赋值来代替复制/粘贴:
ThisWorkbook.Sheets("2017 Actuals").Range(i+1, 5) = wks.Range("Start:Finish")