使用copyRange,格式等于xlPasteValuesAndNumberFormats

时间:2015-03-16 16:06:09

标签: excel vba formatting

我对VBA世界很新,主要是自学(这也是我大多数问题的结果) 我拼凑了一些代码,将自动过滤结果中的数据复制到新工作表中。我遇到的问题是它被复制到目标工作表的格式 - 我希望它以类似于“xlPasteValuesAndNumberFormats”的格式复制它而不使用实际的复制/粘贴 - 是否有办法实现这一点?我不喜欢使用复制/粘贴,因为示例代码使用不同的过滤条件重复多次,并且往往会产生内存错误。示例代码工作得很好,除格式化外没有内存问题。任何帮助,建议,自我抚摸(j / k)表示赞赏。

P.S。:我知道过滤标准没有意义,但由于其机密性质,我不得不删除原始标准 - 抱歉

Sub MWSB_Filter_Macro()
Dim src As Worksheet
Dim tgt As Worksheet
Dim filterRange As Range
Dim copyRange As Range
Dim lastRow As Long


Set src = ActiveWorkbook.Sheets("Sheet Named Log")
Set tgt = ActiveWorkbook.Sheets("Sheet Named Target")

src.AutoFilterMode = False

lastRow = src.Range("A" & src.Rows.Count).End(xlUp).Row

Set filterRange = src.Range("A5:AS" & lastRow)

Set copyRange = src.Range("A5:AS" & lastRow)


filterRange.AutoFilter Field:=5, Criteria1:="MWSB"

filterRange.AutoFilter Field:=12, Criteria1:="2-Criteria for 2", Operator:=xlOr, Criteria2:="3-Criteria for 3"

filterRange.AutoFilter Field:=28, Criteria1:=""

filterRange.AutoFilter Field:=35, Criteria1:=""

copyRange.SpecialCells(xlCellTypeVisible).Copy tgt.Range("A1")

1 个答案:

答案 0 :(得分:0)

从我收集到的内容听起来就像是在运行时间中收到一条弹出消息,说明“剪贴板已满......”。如果这是真的,那么您可以通过在过程的顶部插入以下内容来避免在运行时发生任何弹出消息(因此使用您提到的复制/粘贴方法):

Application.DisplayAlerts = False

或者你可以像上面一样复制到目的地,然后添加代码去那个目的地并更改刚粘贴的范围的格式(如果你不知道如何使用VBA,请尝试录制宏)。 / p>

迈克尔