循环和粘贴特殊

问题描述 投票:0回答:1

我正在将值复制为一个子流程的一部分,并通过userform上的更新按钮粘贴值。

要复制值:

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个文件)而无法更改位置,我如何减少处理时间...

excel vba excel-vba
1个回答
0
投票

范围通常喜欢起始单元格和结束单元格。我建议,因为你只看一个你改变的单元格.Range to .Cells。如果你真的想要使用RC格式的范围,。范围(单元格(row1,col1),单元格(row2,col2)),如果你只想要一个单元格,那么你可以使两个部分相同。我在使用Range之前遇到了问题,之前只有一个单元格定义,要么为它做目标,要么按照我解释的方式填写范围。干杯。

Dim 2017actWS AS Worksheet
Set 2017actWS = ThisWorkbook.Worksheets("2017 Actuals")

1)

2017actWS.Cells(i+1, 5).PasteSpecial xlPasteValues

-要么-

2)

2017actWS.Range(2017actWS.Cells(i+1, 5), 2017actWS.Cells(i+1,5)).PasteSpecial xlPasteValues

当使用Ranges时,excel通常会抛出错误,如果它们在复制和粘贴中的大小不同,您可以通过使用单个单元格作为粘贴的起始目标来消除它.Cells

我也没有看到你打电话给你的功能。您需要将粘贴贴近您的副本,否则您可能会发现事情变得奇怪(建议:在您的副本之后)。

编辑以确保没有工作表歧义。谢谢Scott C.

干杯,WWC

© www.soinside.com 2019 - 2024. All rights reserved.