본문 바로가기

wif LiNoUz/Excel

첫번째 시트는 제외하고 시트 이름 자동으로 바꾸는 vba

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=157957870&qb=7Iuc7Yq47Kad6rCA7ZWY66m07IScIHZiYQ==&enc=utf8&section=kin&rank=2&search_sort=0&spq=0

 

 

 

이전의 코딩된 내용을 아래와 같이 수정해 보세요.

Sub 시트이름변경()

Dim sht As Worksheet '워크시트 개체할당

Dim Cnt As Integer ' 번호변수 할당

For Each sht In Worksheets ' 시트순환

If sht.Visible <> False And Sheets(1).Name <> sht.Name Then ' 시트가숨겨져 있지 않고,

' 첫번째시트이름과 이름이 다르면 아래 내용을 수행하라는 의미 입니다.

cnt = cnt + 1 ' 번호증가
sht.Name = "교각수량집계-P" & Format(cnt, "0") ' 시트이름 지정
End If

Next

End Sub

변수의 선언방법은 명시적선언 과 묵시적선언 이렇게 두가지로 표현 할수 있습니다.

일반적으로 변수는 모두 선언하고 사용하는 것이 바람직 하지만 깜빡 잊고, 선언하지 않거나 그냥(?) 귀찮아서 선언하지 않는 경우, 규모가 크지 않은 소규모의 작은 프로시저를 작성하는 경우가 있습니다. 그 이유는 묵시적선언(필요할때 변수명만 입력하여 사용하는 방법)을 하면 Variant(가변형)로 인식되어 모든 형태의 자료를 다 기억할수 있게되어, 사용상에 문제가 없기 때문입니다. 만약 모든 변수를 묵시적으로 선언하고 Variant형으로 사용하게되면 메모리를 많이 차지 하게되어 규모가 큰 프로그램의 경우 속도가 떨어지는 현상이 발생하기 때문에 그렇게 사용하면 안되겠죠.??

만약 묵시적선언을 사용하지 않도록 하려면 프로시저의 첫줄에 "Option Explicit"란 문장을 기록해두면 컴파일할때 자동으로 선언되지 않은 변수를 알려주게됩니다.

따라서 Cnt는 개체변수가 아니기 때문에 별도의 선언없이 그냥 변수명만 입력하고 사용해도 아무런 지장이 없습니다. 코딩을 이해하는 도움이 되었으면 합니다.