我創建的宏功能的宏一部分是讓VBA創建一個新的電子表格。由於分配的性質,名稱將會改變。我需要將代碼添加到此電子表格中。無論如何,我可以做到這一點?如何添加使用VBA碼一個新的電子表格,使用VBA
3
A
回答
7
Jook已經解釋它是如何工作的。我會更進一步。
增加一個工作表的語法是
expression.Add(Before, After, Count, Type)
如果您檢查內置Excel的幫助下,你可以看到什麼Before
,After
,Count
,Type
代表
從Excel「的幫助
參數(全部4個參數TER值是可選)
Before
- 指定在添加新的片材之前的紙張的對象。After
- 指定之後加入新的片材的片材的對象。Count
- 要添加的張數。默認值是1。Type
- 指定工作表類型。可以是下列XlSheetType常量之一:xlWorksheet
,xlChart
,xlExcel4MacroSheet
,或xlExcel4IntlMacroSheet
。如果您要基於現有模板插入工作表,請指定模板的路徑。缺省值是xlWorksheet。
表格創建完成後,您需要使用.insertlines
來創建相關過程並嵌入要運行的代碼。
注 - IMP:如果你想在代碼中的VBA項目的嵌入代碼,你需要確保你有「信任對VBA項目對象模型」選擇。見快照。
這裏就是我創建一個表,然後嵌入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
一旦您運行上述代碼,這就是新的工作表代碼區域的外觀。
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
默認.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
Sheets
和Worksheets
是可以互換的,如圖所示。
相關問題
- 1. 使用VBA更新表格
- 2. VBA代碼運行時使用Excel電子表格
- 3. VBA電子表格列
- 4. 如何使用VBA添加XML中的第二個子圖
- 5. 使用VBA在excel電子表格中格式化數據
- 6. VBA |使用VBA添加部分行
- 7. 使用VBA將VBA代碼添加到MS Access用戶窗體
- 8. 如何調用子使用/下一VBA
- 9. 如何使用VBA在Excel中添加新工作表?
- 10. 使用VBA將Access文件表導出到Excel電子表格
- 11. 使用VBA將表單值插入Excel電子表格
- 12. 使用Excel VBA添加新選項卡
- 13. 使用Access VBA動畫化子表格
- 14. 如何寫一個「谷歌電子表格」從Excel 2003中VBA
- 15. 使用vba打開最後修改的excel電子表格
- 16. 使用VBA發佈Excel電子表格的最佳方式
- 17. 如何從VBA表單更新電子表格?
- 18. 如何使用VBA代碼
- 19. 使用VBA添加小時
- 20. VBA - 使用find添加列
- 21. 刮HTML表格使用VBA
- 22. HTML表格刮使用VBA
- 23. 使用VBA複製表的合併格式使用VBA
- 24. 在電子表格中使用VBA函數和變量
- 25. 使用Excel VBA在外部電子表格中追蹤先例
- 26. 使用VBA從Excel電子表格提取unicode文本
- 27. 使用VBA將網頁導入Excel電子表格
- 28. 使用python將excel電子表格添加爲多個電子表格
- 29. vba複製數據並將數據從一個電子表格重新排列到另一個電子表格
- 30. 用戶使用表格VBA添加字符串
+ 1正確的標記。 –