VBA Excel:具有特定名称时删除工作表

时间:2014-10-17 18:45:36

标签: excel-vba vba excel

对于我的工作簿,当用户想要删除项目的选项卡时,他们将PRJNumber放在程序选项卡的单元格T14中。存在具有该项目编号的各种其他选项卡作为名称的最后6位数(例如,A_PRJNumber,B_PRJNumber等)。所有PRJNumber长度均为6位数。下面的代码应该工作,两个msgbox指示它正在读取单元格T14中的6位数字和正确的选项卡名称,但它不会删除选项卡或给我任何错误。想法?

Sub Delete_Project()

Dim wks As Worksheet
Dim PRJNumber
 PRJNumber = Sheets("Program").Range("T14").Value
 MsgBox (PRJNumber)

 For Each wks In ActiveWorkbook.Worksheets
 MsgBox (Right(wks.Name, 6))
    If Right(wks.Name, 6) = PRJNumber Then
        wks.Delete
    End If


 Next wks

End Sub

1 个答案:

答案 0 :(得分:1)

我怀疑的是T14包含一些额外的空格/等。

例如:

Dim str1 as String, str2 as String
str1 = "123456  "
str2 = "123456"

'## These two message boxes should look the same, you would not be able to tell the difference:
MsgBox str1 

MsgBox str2

'## But by comparing their inputs, you can see they are NOT the same
MsgBox str1 = str2

如果是这种情况,那么您可以使用TRIM函数,如果它们无意中输入空格(通常这些是其他应用程序的复制/粘贴结果等),它将处理用户错误:

PRJNumber = Trim(Sheets("Program").Range("T14"))