2014-10-17 3 views
0

내 통합 문서의 경우 사용자가 프로젝트 탭을 삭제하려고하면 프로그램 탭의 셀 T14에 PRJNumber를 넣습니다. 이 프로젝트 번호에는 이름의 마지막 6 자리 숫자 (예 : A_PRJNumber, B_PRJNumber 등)가 포함 된 여러 가지 탭이 있습니다. 모든 PRJ 번호는 6 자리입니다. 아래 코드는 작동해야합니다. 두 개의 msgbox는 셀 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 (오른쪽 (wks.Name, 6) = PRJNumber)'. '참'또는 '거짓'이라고 말하는가? –

+0

내가 의심하는 바는 T14에 여분의 공백이 있다는 것입니다. 'MsgBox "Hello"는'MsgBox "Hello"와 같지만 값은 같지 않습니다. –

+1

'PRJNumber = Trim (Sheets ("Program"). Range ("T14"))'할 수 있고 해결해야합니다. –

답변

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"))