|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
1. 엑셀 버전(95,97,2000,2002): 2002
2. 윈도우즈의 버전(win95,win98,winME,winNT,win2000,winXP): winXP
3. CPU (486,PentiumI/II/III/IV...): P4-1.6G
4. RAM (32,64,128,256,512MB,1G...): 512
* 아래줄에 질문을 작성하세요 >>
답변 고맙습니다.
그런데, 그 방법은 임시 방편인것 같아서요.
제가 실제로 만들고 있는 프로그램은 그것보다 좀 복잡하거든요.
제가 다른 예제를 하나 만들었습니다.
한 번 보시고 의견 부탁드릴께요.
원래 굉장히 복잡한 프로그램인데 모두다 삭제하고 핵심만 남겨놓았습니다.
원래 프로그램은 이렇습니다.
어떤 조건에 따라 시트가 가변적으로 생성 되며, 신규로 생성된 시트에는 각 각 해당하는 VBA 코드들을 갖고 있어야 합니다.
즉 프로그램이 실행되면, 시트를 신규로 만들고 그 시트마다 VBA코드들을 넣어주어야 합니다.
그러려면 codeName이 꼭 필요한데, 그 CodeName이 VBE가 열린 상태에서는 제대로 읽혀지는데, VBE를 닫으면 항상 ""값이 return됩니다.
첨부된 다른 예제 파일을 한 번 점검해주세요.
==============[입살님 글에 대한 답변입니다]==============
안녕하세요? 입살 님!
고약한 경우로군요^^*
Option Explicit
Sub sf_Test()
Dim wsMySheet As Worksheet
Dim strCodeName As String
Dim wsWorksheet As Worksheet
Dim wsTest As Worksheet
Dim intCounter As Integer
Dim k As Integer '추가하세요...
Set wsTest = Sheets("Test")
Application.DisplayAlerts = False
'##############################
'기존 Data 시트들 모두 삭제
'##############################
For Each wsWorksheet In Worksheets
If (wsWorksheet.Name <> "Test") Then wsWorksheet.Delete
Next wsWorksheet
Application.DisplayAlerts = True
k = ThisWorkbook.VBProject.VBComponents.Count '추가
For intCounter = 1 To 5
Worksheets.Add before:=wsTest
Set wsMySheet = ActiveSheet
wsMySheet.Name = "ws_" & intCounter
Cells(1, 1) = intCounter
strCodeName = ThisWorkbook.VBProject.VBComponents(k + intCounter).Name '수정
MsgBox wsMySheet.Name & "시트의 CodeName = [" & strCodeName & "]", vbInformation, "MagicSheet & 엑사모::http://officedev.co.kr"
Next intCounter
End Sub
그럼...행운이 있으시길...!
|
|