VBA拆分Excel工作簿时为不同工作表设置差异化XLPaste粘贴规则
代码修改方案
你只需要调整循环内的逻辑,增加工作表名称判断即可,修改后的完整代码如下:
Private Sub CommandButton1_Click() ' Plain_Copy Macro Sheets("PROCUREMENT").Visible = True Sheets("Request").Visible = True Sheets("LISTS").Visible = True Sheets("Copy").Visible = True Dim ws As Worksheet With ActiveWorkbook .Sheets(Array("REQUESTOR", "PROCUREMENT", "Request", "LISTS", "Copy")).Copy Application.ScreenUpdating = False For Each ws In ActiveWorkbook.Worksheets ' 仅对指定的两个工作表执行转值操作 If ws.Name = "REQUESTOR" Or ws.Name = "Copy" Then With ws.UsedRange .Copy .PasteSpecial xlPasteValuesAndNumberFormats End With End If Next ws Application.CutCopyMode = False Application.ScreenUpdating = True End With End Sub
改动说明
- 移除了原代码中冗余无效的
TheActiveWindow、TempWindow相关定义和TempWindow.Close语句,上述变量未做初始化赋值,放在循环内属于逻辑错误 - 在工作表遍历循环中增加了名称判断逻辑:仅当工作表名称为
REQUESTOR或Copy时,才执行粘贴为值与数字格式的操作,其余PROCUREMENT、Request、LISTS三个工作表会直接保留复制后的原有公式
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

