excel vba中工作表sheet写入button的事件响应代码 40

在工作表加入button后,在工作表中写入button的事件响应代码如下:DimfeednameasStringFornum1=1Tofeedworkbook.Works... 在工作表加入button后,在工作表中写入button的事件响应代码如下:
Dim feedname as String
For num1 = 1 To feedworkbook.Worksheets.Count
feedname = ThisWorkbook.VBProject.VBComponents(num1).Name
With feedworkbook.VBProject.VBComponents(feedname).CodeModule
.InserLines 1, "Private Sub Btn002001_Click()"
.InserLines 2, "Call chancecheckbox"
.InserLines 3,"End Sub"
End With
Next

以上代码在feedname = "ThisWorkbook"时能顺利通过,但当feedname = "Sheet1"(即工作表codename)时就出现Microsoft Office Excel 遇到问题需要关闭
请问一下这是什么问题,怎样解决呢
打错了,feedworkbook改为ThisWorkbook
简单来说,就是用excel vba 在VBProject里的ThisWorkbook插入代码可以,但到了工作表中如(Sheet1)就出现问题了,我用的是Excel 2007
展开
 我来答
姓王的wy451

2014-12-30 · TA获得超过48.3万个赞
知道大有可为答主
回答量:8万
采纳率:78%
帮助的人:8860万
展开全部

程序不能运行的主要问题在于 InsertLines 方法中少了一个 t,仔细对照就知道了。

但另外的问题是你代码逻辑上有点问题,你想在所有工作表上写代码,如下修改就行:

For num1 = 1 To ThisWorkbook.Worksheets.Count
   With ThisWorkbook.VBProject.VBComponents("sheet" & num1).CodeModule
      .InsertLines 1, "Private Sub Btn002001_Click()"
      .InsertLines 2, "Call chancecheckbox"
      .InsertLines 3, "End Sub"
   End With
Next
追问
按照这个代码编译就是出现microsoft Office Excel遇到问题需要关闭
我一开始也是这样编写的
舒缓还谦逊丶雪花c
2014-12-30 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:51.4万
展开全部
试试这个:
Dim feedname As String
For num1 = 1 To ThisWorkbook.Worksheets.Count + 1
feedname = ThisWorkbook.VBProject.VBComponents(num1).Name
Set newmodule = ThisWorkbook.VBProject.VBComponents(feedname)
strCode = "Private Sub Btn002001_Click()"
strCode = strCode & Chr(10) & "Call chancecheckbox"
strCode = strCode & Chr(10) & "End Sub"
newmodule.CodeModule.AddFromString strCode
Next
原因:ThisWorkbook.Worksheets.Count只能返回工作表的数量,而VB对象多了一个ThisWorkbook,而且是第一个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式