2013-04-06 2 views
1

이 코드를 작성하는 동안 VBA에서 SUB 함수가 누락되었음을 알리는 이유를 알고 싶습니다. 시트가 NVT라고 할 때 코드는 모든 작업을 건너 뛰고 (다음 명령에서) 활성화 될 다음 시트로 이동해야합니다. 이 작업이 끝나면 "특정 이름"또는 "NVT"가 채워지지 않은 모든 블랭크 시트를 삭제해야합니다. 수식이이 옵션없이 제대로 작동합니다. 나는이 코드를 저장하는 데 아무런 문제가 없으며 공식 자체에 문제가 없다. 어떤 제안이라도 환영합니다 .. 나는이 위협이 아직 게시되지 않았다고 믿는다. 추가 정보가 필요하면 알려주십시오. 원래의 코드는 verry 길며,이 문제를 불쾌하게하는 방법을 나타낼뿐입니다. 위협에 대한 답을 누가 주는지에 대한 조언.VBA excel 2010 시트 이름 및 블랭크 시트 삭제

Sub Printtabs() 
' Print 
ThisWorkbook.Activate 
If ThisWorkbook.Sheets(7) = ("NVT") Then Skip 
If ThisWorkbook.Sheets(7) = ("NAME SPECIFIC 1") Then 
'process formula 
End If 
If Thisworkbook.Sheets (8) = ("NVT) Then Skip 
If Thisworkbook.Sheets (8) = ("NAME SPECIFIC 2") Then 
'process formula 
End If 
'then I should find the way to delete every "blanc" sheets in this workbook (becouse I skipped before and there will be blanc sheets) and save 
End Sub 
+0

VB에서는 '건너 뛰기'가 키워드가 아닙니다. 'If'는 일치하는'End If'를 필요로합니다. VBA에 대해 잘 알고 있습니까? – shahkalpesh

+0

음, VBA가 대문자 "S"를 자동으로 채우고 있기 때문에 VBA가 프로세스를 인식 할 것이라고 생각했습니다. (그래서 나는 내가했던 기초 연구에 대해 안다. Althuogh 나는 단지 학생이다 .VBA가 수년간의 경험을 쌓을 수 있으며, 나는 그 순간에 시간이 없다. 지식에 대한 모든 것을 관리한다. 나는 불편을 끼쳐 드려 죄송합니다. – user2151190

답변

2

당신 don't need.Activate를 사용합니다. 시트로 직접 작업 할 수 있습니다. 또한 시트를 삭제하고 이벤트를 끌 때 항상 적절한 오류 처리를 사용하십시오.

이게 너가하려는거야?

Dim ws As Worksheet 

Sub Printtabs() 
    On Error GoTo Whoa 

    For Each ws In ThisWorkbook.Worksheets 
     If ws.Name = "NAME SPECIFIC 1" Then 
      '~~> Process Formula 
     ElseIf ws.Name = "NAME SPECIFIC 2" Then 
      '~~> Process Formula 
     Else 
      If ws.Name <> "NTV" And WorksheetFunction.CountA(ws.Cells) = 0 Then 
       Application.DisplayAlerts = False 
       ws.Delete 
       Application.DisplayAlerts = True 
      End If 
     End If 
    Next ws 

LetsContinue: 
    Application.DisplayAlerts = True 
    Exit Sub 
Whoa: 
    MsgBox Err.Description 
    Resume LetsContinue 
End Sub 
+0

Wel 나는 이것이 Verry 건설적인 솔루션 인 Mr. Siddhart처럼 보일 것임을 인정해야합니다. 신속한 응답을 주셔서 감사합니다 !!! 지금은 귀하의 코드를 투표하고 내일 아침에 코드를 다시 작성하고 알려줄 것입니다! 나는 verry입니다. 그것을 바로 볼 수있게되어 기쁘게 생각합니다. 지금 22시 34 분이며, 오늘은 조금 불에 타서 .... 저는 정말로 당신의 도움을 받아줍니다 .--). – user2151190

+0

안녕하세요 미스터 Siddarth. 나는 코드에 약간의 문제가있다. – user2151190

+0

그리고 그게 뭐죠? –

0

그래서 나는 내가 믿는 블랭크 시트를 삭제하는 방법을 알아 냈습니다. 시트 이름 문제 만 남아 있습니다. 이 부분 코드는 모든 처리 된 수식의 끝에서 실행됩니다. 나를 도울 수 Hopely 누군가 ....

Dim ws As Worksheet 
For Each ws In Worksheets 
    If WorksheetFunction.CountA(ws.Cells) = 0 Then 
     Application.DisplayAlerts = False 
     ws.Delete 
     Application.DisplayAlerts = True 
    End If 
Next ws 
관련 문제