suffix = Replace(wsPaste.Range("B3:F3").Value, "/", "-") 报错类型不匹配
时间: 2023-07-06 11:44:12 浏览: 43
抱歉,我的代码还有误。原因是 `wsPaste.Range("B3:F3").Value` 返回的是一个二维数组,而 `Replace` 函数需要的是一个字符串。因此,需要将数组转换为字符串,然后再使用 `Replace` 函数。
以下是修改后的代码:
```VBA
Sub CopySheetAndConvertFormula()
' 定义变量
Dim wbNew As Workbook
Dim wsCopy As Worksheet
Dim wsPaste As Worksheet
Dim ws As Worksheet
Dim newName As String
Dim suffix As String
' 查找要复制的工作表
For Each wsCopy In ActiveWorkbook.Worksheets
If wsCopy.Name = "中兴通讯成品运输提货单(空运)" Then
' 生成新工作表
Set wbNew = Workbooks.Add
Set wsPaste = wbNew.Sheets(1)
' 复制工作表
wsCopy.Copy Before:=wsPaste
' 转换公式
For Each ws In wbNew.Worksheets
ws.Cells.Copy
ws.Cells.PasteSpecial xlPasteValues
Next ws
' 获取后缀
suffix = Replace(Join(Application.Transpose(wsPaste.Range("B3:F3").Value), ""), "/", "-")
' 生成新名称
newName = "中兴通讯成品运输提货单(空运)-" & suffix
' 重命名新工作表
wsPaste.Name = newName
' 保存新工作表
wbNew.SaveAs "C:\Users\" & Environ("USERNAME") & "\Desktop\" & newName & ".xlsx"
' 关闭新工作表
wbNew.Close False
' 结束
Exit Sub
End If
Next wsCopy
' 如果未找到对应工作表,弹出提示框
MsgBox "找不到工作表 '中兴通讯成品运输提货单(空运)'"
End Sub
```
使用方法与前面的回答一致。如果还有问题,请及时提出。