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

基于单选按钮选择触发宏的按钮报错求助(Sub未定义)

问题解决:VBA宏执行时“Sub or Function not defined”错误修复

错误根源

第3行的Worksheet("Calculator")写法有误,VBA中引用工作表集合内的单个工作表必须使用复数形式的Worksheets,单数Worksheet是对象类型,无法直接通过名称调用,这就是触发报错的直接原因。

修正后的代码

Sub GenerateEmail_Click()
    Dim ws As Worksheet
    Set ws = Worksheets("Calculator") ' 修正为Worksheets复数形式
    
    ' 表单控件单选按钮的取值判断
    If ws.Shapes("Option Button 1").ControlFormat.Value = xlOn Then
        Call EMail_No_New
    ElseIf ws.Shapes("Option Button 2").ControlFormat.Value = xlOn Then
        Call EMail_New
    End If
End Sub

补充说明

  • 若你的单选按钮是ActiveX控件,取值逻辑需要调整为:
    ' ActiveX控件的取值判断
    If ws.OLEObjects("OptionButton1").Object.Value = True Then
        Call EMail_No_New
    ElseIf ws.OLEObjects("OptionButton2").Object.Value = True Then
        Call EMail_New
    End If
    
  • 因单选按钮是互斥选择,使用ElseIf比嵌套If更简洁高效。
  • 需确保EMail_No_New和EMail_New两个子过程已正确定义,且与当前宏处于同一模块(或已完成正确引用)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:42:02