You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA Workbook_NewSheet编译错误:未找到方法或数据成员求助

编译错误“Method or data member not found”的原因及解决方法

错误原因

代码中直接使用ws.CodeModule是错误的——Worksheet对象本身并不包含CodeModule这个属性或数据成员。要操作工作表的代码模块,必须通过Excel VBA项目的VBComponent对象来访问。

修正后的代码

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    Dim ws As Worksheet
    Set ws = Sh
    
    ' Add Worksheet_Change event to new sheet
    Dim code As String
    code = "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf & _
           "    If Not (Application.Intersect(Range(""A1:E19""), Target) Is Nothing) Then" & vbCrLf & _
           "        MsgBox ""Cell "" & Target.Address & "" has changed."", vbInformation, ""Test""" & vbCrLf & _
           "    End If" & vbCrLf & _
           "End Sub"
    
    ' 通过VBComponent访问代码模块
    With ThisWorkbook.VBProject.VBComponents(ws.Name).CodeModule
        .InsertLines 2, code
    End With
End Sub

额外注意事项

  • 必须在Excel信任中心开启"信任对VBA项目对象模型的访问":依次点击「文件」→「选项」→「信任中心」→「信任中心设置」→「宏设置」,勾选对应选项,否则会触发权限错误。
  • 若新工作表的代码模块默认包含Option Explicit(开启强制变量声明时),插入到第2行是合理的;若没有该行,可调整InsertLines的行号为1,或用.CountOfLines + 1来追加到模块末尾。

内容的提问来源于stack exchange,提问作者majinvegito123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:47:49