基于单选按钮选择触发宏的按钮报错求助(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
相关产品推荐
相关产品推荐

