将事件代码添加到新创建的工作表的问题

时间:2011-06-23 14:42:07

标签: excel excel-vba vba

我在向新创建的工作表添加事件代码时遇到问题。

问题似乎只在我打开Excel工作簿后才会发生。 我用

Dim codemod As Object
codemod = ActiveWorkbook.VBProject.VBComponents(Worksheets("Sheet4").CodeName).CodeModule 

将代码添加到创建的工作表模块但是当我尝试在打开Excel工作簿后立即运行此代码时,它给出了一个错误:运行时错误'9'下标超出范围。调试指向codemod行。

奇怪的是,当我稍微更改代码然后将其更改回原始状态时,此错误不再出现。在我这样做之后,代码按原样运行,即将代码插入到新创建的工作表中。

任何人都知道可能是什么问题?

除了插入行之外,代码没有太多其他内容,但这似乎不是问题。

提前致谢

1 个答案:

答案 0 :(得分:0)

(这是我对S.O.的第一次行动所以当我做错事时请不要对我大喊大叫。)

您是否使用所需的事件代码(Test1.xls-Sheet1)准备工作簿+工作表。然后,在目标工作簿(Test2.xls)中,复制准备好的工作表。目标工作簿中的代码看起来像

Sub Demo1()
  Workbooks.Open "Test1.xls"
  Sheets("Sheet1").Copy After:=Workbooks("Test2.xls"). _
     Sheets(Workbooks("Test2.xls").Worksheets.Count)
  Workbooks("Test2.xls").Activate
End Sub

这显然是一种解决方法,但它可以立即使用。

第二个选项可能是准备'workbook-with-one-sheet'并将其保存为(工作表)模板在D:\ Documents and Settings \ User \ Application Data \ Microsoft \ Excel \ XLSTART中。在这种情况下,代码可以是

Sub Demo2()
  Sheets.Add Type:="Test1"
End Sub