2014-10-17 102 views
0

對於我的工作簿,當用戶想要刪除項目的選項卡時,他們將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 
+2

使第二個消息框執行此操作:'MsgBox(Right(wks.Name,6)= PRJNumber)'。它是否說「真」或「假」? – 2014-10-17 18:50:01

+0

我懷疑是T14包含一些額外的空間/等。 'MsgBox「Hello」'看起來與'MsgBox「Hello」'相同,但是值不一樣。 – 2014-10-17 18:51:06

+1

你可以做'PRJNumber = Trim(表格(「程序」)。範圍(「T14」))'這應該解決它我認爲。 – 2014-10-17 18:52:25

回答

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")) 
相關問題