首页 > 解决方案 > VBA根据选择和预定列在过滤列表中选择可见范围

问题描述

我认为有一个简单的解决方案,但我一直无法弄清楚。

我有一个过滤列表,我试图将我选择的可见行复制并粘贴到另一个工作表中。我粘贴在两个单独的块中,所以我不能一次粘贴整行。

示例表

我正在处理这样的事情。我选择了几行,我想运行这个宏来复制 A1150:E1197,只抓取可见行,然后复制 F1150:L1197。如果它不需要 E 是选择的列,那将是最好的。

我最初的设计为每个循环使用了一个。对于每一行,它复制左侧块,切换到另一个工作表并粘贴,冲洗并重复右侧块。它最终变得非常缓慢,大约需要 15 秒 10 行左右。我相信在工作簿之间切换是减慢速度的主要部分,所以我现在尝试一次复制左右块。

感谢任何帮助!

标签: vbaexcel

解决方案


感谢 Marcucciboy2 的建议。

这是我用来复制左侧块的代码,然后是右侧块的不同列。

Private Function CopyBlocks()
Dim firstRow As Integer
Dim lastRow As Integer

firstRow = ActiveCell.row
lastRow = ActiveCell.row + Selection.Rows.Count - 1

'copy left block
Range("A" & firstRow, "E" & lastRow).SpecialCells(xlCellTypeVisible).Copy

'Switch workbooks & paste
'copy right block
'switch workbooks and paste

End Function

推荐阅读