永发信息网

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

答案:3  悬赏:40  手机版
解决时间 2021-01-31 16:26
  • 提问者网友:我是女神我骄傲
  • 2021-01-31 04:13
在工作表加入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
最佳答案
  • 五星知识达人网友:玩世
  • 2021-01-31 04:34
程序不能运行的主要问题在于 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
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-01-31 07:20
试试这个: 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,而且是第一个。
  • 2楼网友:慢性怪人
  • 2021-01-31 05:58
sub abc() sheet2.visible = xlsheetvisible sheet2.activate sheet1.visible = xlsheethidden end sub sub abcd() sheet1.visible = xlsheetvisible sheet1.activate sheet2.visible = xlsheethidden end sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯