上面这个宏增加一行代码,在'将新工作表额所有公式转换为非公式前,实现删除9列到11列里公式输出为FALSE的单元格内容,更新这个宏
时间: 2024-03-19 17:44:42 浏览: 53
下面是更新后的 VBA 代码,它在将新工作表中的所有公式转换为非公式之前,会删除第9-11列中输出为 FALSE 的单元格内容。
```
Sub CopySheetAndConvertFormulas()
Dim ws As Worksheet, newWb As Workbook
Dim suffix As String, newFileName As String
Dim cell As Range
' 获取当前工作表中名为 "中兴通讯成品运输提货单(空运)" 的工作表
On Error Resume Next
Set ws = Worksheets("中兴通讯成品运输提货单(空运)")
If ws Is Nothing Then
MsgBox "未找到名为 '中兴通讯成品运输提货单(空运)' 的工作表。"
Exit Sub
End If
' 复制工作表到新的工作簿
Set newWb = Workbooks.Add
ws.Copy Before:=newWb.Worksheets(1)
' 删除第9-11列中输出为 FALSE 的单元格内容
For Each cell In newWb.Worksheets(1).Range("I:I").SpecialCells(xlCellTypeFormulas, xlErrors).Cells
If cell.Value = False Then
cell.ClearContents
End If
Next
For Each cell In newWb.Worksheets(1).Range("J:J").SpecialCells(xlCellTypeFormulas, xlErrors).Cells
If cell.Value = False Then
cell.ClearContents
End If
Next
For Each cell In newWb.Worksheets(1).Range("K:K").SpecialCells(xlCellTypeFormulas, xlErrors).Cells
If cell.Value = False Then
cell.ClearContents
End If
Next
' 将新工作表的所有公式转换为非公式
For Each ws In newWb.Worksheets
ws.Cells.Copy
ws.Cells.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next
' 获取后缀和新文件名
suffix = newWb.Worksheets(1).Range("B3").Value
If newWb.Worksheets(1).Range("B3").MergeCells Then
suffix = newWb.Worksheets(1).Range("B3").MergeArea.Value
End If
newFileName = "中兴通讯成品运输提货单-" & suffix & ".xlsx"
' 保存新的工作簿并重命名工作表
newWb.SaveAs "C:\Users\DELL\Desktop\ZTE TRUCK\中兴通讯成品运输提货单\" & newFileName
newWb.Worksheets(1).Name = suffix
' 关闭新的工作簿
newWb.Close SaveChanges:=False
MsgBox "已完成操作。"
End Sub
```
阅读全文