2012-09-05 3 views

답변

7

J은 이미 어떻게 작동하는지 설명했습니다. 나는 한걸음 더 나아갈 것이다.

워크 시트를 추가하는 구문은 붙박이 Excel의 도움말을 확인하면

expression.Add(Before, After, Count, Type) 

다음 당신이 볼 수있는 무엇 Before, After, Count,

EXCEL FROM "S에 도움을 Type 스탠드

매개 변수 (모두 4 개 매개 변수 새로운 시트를 추가하는 전에 시트를 지정하는 객체 - TERS은

  1. Before)

    선택 사항입니다.
  2. After - 새 시트가 추가 된 후의 시트를 지정하는 객체입니다.
  3. Count - 추가 할 용지 수. 기본값은 1입니다.
  4. Type - 시트 유형을 지정합니다. 다음 XlSheetType 상수 중 하나 일 수 있습니다 (xlWorksheet, xlChart, xlExcel4MacroSheet 또는 xlExcel4IntlMacroSheet). 기존 템플릿을 기반으로 시트를 삽입하는 경우 템플릿의 경로를 지정하십시오. 기본값은 xlWorksheet입니다.

시트가 만들어지면 .insertlines을 사용하여 관련 절차를 만들고 실행하려는 코드를 포함해야합니다.

주 - IMP : 당신은 VBA 프로젝트에 코드를 포함하는 코드를 원하는 경우에, 당신은 당신의 "VBA 프로젝트 개체 모델-트러스트 액세스"가 선택되어 있는지 확인해야합니다. 스냅 샷을 참조하십시오.내가 시트를 만든 다음 메시지에 "Hello World"

코드를 표시하는 Worksheet_SelectionChange 코드 삽입하고 여기 어디에

enter image description here

은 예입니다 - 시도하고 테스트 완료를

Option Explicit 

Sub Sample() 
    Dim ws As Worksheet 
    Dim nLines As Long 
    Dim VBP As Object, VBC As Object, CM As Object 
    Dim strProcName As String 

    Set ws = Worksheets.Add 

    Set VBP = ThisWorkbook.VBProject 
    Set VBC = VBP.VBComponents(ws.Name) 
    Set CM = VBC.CodeModule 

    strProcName = "Worksheet_SelectionChange" 

    With ThisWorkbook.VBProject.VBComponents(_ 
    ThisWorkbook.Worksheets(ws.Name).CodeName).CodeModule 
     .InsertLines Line:=.CreateEventProc("SelectionChange", "Worksheet") + 1, _ 
     String:=vbCrLf & _ 
     " Msgbox ""Hello World!""" 
    End With 
End Sub 

위의 코드를 실행하면 새 시트 코드 영역이 어떻게 표시됩니다.

enter image description here

2

다음 코드는 스프레드 시트를 추가합니다. 이 특정 스프레드 시트에 VBA 코드를 추가해야하는 경우

Public Sub Workbook_Add() 
Dim wks As Worksheet 
Set wks = ThisWorkbook.Worksheets.Add(, , 1, xlWorksheet) 
With wks 
    'set codename of wks 
    ThisWorkbook.VBProject.VBComponents(.CodeName).Name = "tblWhatever" 
    'set tablename of wks 
    .Name = "whatever" 
    'add code (untested demo) 
    'ThisWorkbook.VBProject.VBComponents(.CodeName).CodeModule.InsertLines 1, "Option Explicit" 
    'add code (as of example from excel-help) 
    'Application.VBE.CodePanes(1).CodeModule.InsertLines 1, "Option Explicit" 
End With 
End Sub 

, 당신은 더 VBProject에 개체를 검사해야 - CodeModule을 찾아 다음 즉 InsertLines.

추가 힌트 - 테이블의 CodeNames를 사용하려고합니다. 변경 가능성은 적지 만 처음에는 코드에서 사용하기가 쉽지 않을 수 있습니다. 나는 그것에 익숙해 져야했지만 나에게는 테이블 이름 사용에 대한 많은 이점이있다.

호프가 도움이 되길 바랍니다.)

+0

+1 오른쪽에 있습니다. –

0

기본 .Add 방법은 목록의 시작에 시트를 추가합니다. Siddarth Rout에 설명 된 것처럼 코드 행을 추가하기 전에 을 끝에 끝에 추가하려는 경우가 많습니다. 어디서든 사용할 수있는 것을해야 할 일 :

ActiveWorkbook.Worksheets.ADD After:=ActiveWorkbook.Sheets(ActiveWorkbook.Worksheets.Count) 

WB를 사용자가 정의한 경우 읽기 및 설정하기 쉽습니다 : 그림과 같이

Dim WB as Excel.workbook 
    Set WB = ActiveWorkbook 
     WB.Sheets.ADD After:=WB.Sheets(WB.Sheets.Count) 
     Set VBC = ActiveSheet  'If using in Siddarth Rout's code above 

SheetsWorksheets는, 교환 할 수있다.

관련 문제