过滤后的输出是一行

时间:2015-08-13 02:27:07

标签: vba excel-vba excel

我有一个文件,我使用动态复制并粘贴vba,一切正常但当过滤后的输出只有1行时,程序粘贴一行,将其复制到粘贴目标范围(从第1行到第1行)结束)。它只发生在过滤后的输出是一行时。

这是我的复制代码:

Select Filtered data Range("A1").Select 
Range(Selection, Selection.End(xlToRight)).Select 
Range(Selection, Selection.End(xlDown)).Select 
If Selection.Columns(1).SpecialCells(xlCellTypeVisible).Count = 2 Then
     MsgBox ("Guess What! there are no break fix today, let's try again tomorrow") 
     Application.DisplayAlerts = False 
     Application.ScreenUpdating = False 
     openWb.Close 
     Exit Sub 
End If 
'Copy selected data 
Selection.Copy 

粘贴代码:

Sub (PasteCopied data)

 ThisWorkbook.Worksheets("Renee's Report").Range("B:AD") _
    .PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这就是粘贴在Excel中的工作方式。如果您手动复制和粘贴,您将看到相同的行为 - 大致 -

  • 如果复制的范围是单行,列或单元格,并且粘贴的范围分别具有多个行/列/单元格,则Excel将重复复制的单元格以填充粘贴范围
  • 如果复制的范围不是上述范围之一,则粘贴范围的左上角会粘贴一个副本

要修复它,您只需要粘贴到一个单元格中:

ThisWorkbook.Worksheets("Renee's Report").Range("B1") _
.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False