对于我的工作簿,当用户想要删除项目的选项卡时,他们将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
答案 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"))