2012-09-05 62 views

回答

7

Jook已經解釋它是如何工作的。我會更進一步。

增加一個工作表的語法是

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

如果您檢查內置Excel的幫助下,你可以看到什麼BeforeAfterCountType代表

從Excel「的幫助

參數全部4個參數TER值是可選

  1. Before - 指定在添加新的片材之前的紙張的對象。
  2. After - 指定之後加入新的片材的片材的對象。
  3. Count - 要添加的張數。默認值是1。
  4. Type - 指定工作表類型。可以是下列XlSheetType常量之一:xlWorksheetxlChartxlExcel4MacroSheet,或xlExcel4IntlMacroSheet。如果您要基於現有模板插入工作表,請指定模板的路徑。缺省值是xlWorksheet。

表格創建完成後,您需要使用.insertlines來創建相關過程並嵌入要運行的代碼。

注 - IMP:如果你想在代碼中的VBA項目的嵌入代碼,你需要確保你有「信任對VBA項目對象模型」選擇。見快照。

enter image description here

這裏就是我創建一個表,然後嵌入Worksheet_SelectionChange守則,將顯示一條消息,「Hello World」的

代碼的例子 - 久經考驗

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

下面的代碼會增加你的電子表格。

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 

如果需要VBA的代碼添加到這個特定的電子表格,您應該進一步檢查VBProject對象 - 尋找CodeModule然後即InsertLines

爲您進一步的暗示 - 我會嘗試用你的表的代號。它不太可能被改變 - 但起初在代碼中使用它可能並不舒服。我不得不習慣它,但對我來說,使用表名稱有很多好處。

希望這有助於;)

+0

+ 1正確的標記。 –

0

默認.Add方法添加在列表的開頭的片材。在添加代碼行之前,通常需要在末尾處添加,如Siddarth Rout所述。要做到這一點任何地方,你可以使用:

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

這是比較容易閱讀,如果你已經定義並設置白平衡:

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是可以互換的,如圖所示。