复制 - 粘贴问题

时间:2014-12-11 12:21:10

标签: vba excel-vba excel

我知道,在我提出问题时,我可能听起来非常愚蠢。

我正在尝试通过VBA代码将excel表格的粘贴数据复制到我的主Excel工作表。

sht1.Sheets(1).Activate
Range("B58:L87").Copy
ThisWorkbook.Sheets("Q1").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

sht2.Sheets(1).Activate
Range("B58:L87").Copy
ThisWorkbook.Sheets("Q2").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

接下来的两张纸继续相同。 Q3和Q4。

在我生命的第一次,我发现在运行代码时发生了一件奇怪的事情。

当我在没有断点的情况下一次运行完整代码时(F5) - > Q1和Q4表是空白的。 Q2和Q3表格已成功复制。

但是 当我逐步执行相同的代码时(F8) - >所有四张Q1,Q2,Q3和Q4都填充了所需的数据。

有人可以睁开眼睛看看看不见的背景过程:)

我今天找到了答案......那是经过这么多天后的事情:)

我将纸张从第3个位置移动到第一个位置。但在内部它(Sheet(1),我没有考虑到考虑....:)

3 个答案:

答案 0 :(得分:1)

如果在调试时它起作用,那么它应该在运行时工作,除非你在调试期间选择工作簿/工作表。

尝试使用此代替当前代码。

For i = 1 To 4
   ThisWorkbook.Sheets("Q" & i).Range("A1:K30").Value = sht1.Sheets(1).Range("B58:L87").Value
Next i

答案 1 :(得分:1)

尝试直接分配值

,而不是复制和粘贴
Dim src as Range, dst as Range
Set src = sht1.Range("B58:L87")
Set dst = ThisWorkbook.Sheets("Q1").Range("A1")

dst.Resize(src.Rows.Count,src.Columns.Count).Value = src.Value

答案 2 :(得分:0)

我今天找到了答案......那是经过这么多天后的事情:)

我将纸张从第3个位置移动到第一个位置。但在内部它(Sheet(1),我没有考虑到考虑....:)