VBA Excel:删除具有特定名称的工作表
问题描述:
对于我的工作簿,当用户想要删除项目的选项卡时,他们将PRJNumber放在程序选项卡的单元格T14中。该项目编号有各种其他标签,作为名称的最后6位数字(例如,A_PRJNumber,B_PRJNumber等)。所有PRJNumbers都是6位数字。下面的代码应该工作,两个msgboxes表明它正在读取单元格T14中的6位数字和正确的标签名称,但它不会删除标签或给我任何错误。想法?VBA Excel:删除具有特定名称的工作表
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
答
我怀疑的是,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"))
使第二个消息框执行此操作:'MsgBox(Right(wks.Name,6)= PRJNumber)'。它是否说“真”或“假”? – 2014-10-17 18:50:01
我怀疑是T14包含一些额外的空间/等。 'MsgBox“Hello”'看起来与'MsgBox“Hello”'相同,但是值不一样。 – 2014-10-17 18:51:06
你可以做'PRJNumber = Trim(表格(“程序”)。范围(“T14”))'这应该解决它我认为。 – 2014-10-17 18:52:25