无法通过Excel 2016找到VBA通知宏

时间:2018-01-17 01:21:00

标签: excel vba excel-vba

所以我有这个代码,其功能是如果范围中的单元格值等于数字x,则向用户发送电子邮件提醒。在邮件中,它直接指定哪个单元格地址已更改。但现在的问题是,我总是被Macros表提示选择要处理的宏,更糟糕的是,我的宏根本不存在

Private Sub Worksheet_Change(ByVal Target As Range)

            If Target.Column = 5 Then
                If Target.Row < 15 And Target.Row > 2 Then
                    If Target.value < 1 Then
                    Call mymacro(Target.Address)
                    End If
                End If
            End If
        End Sub

    Private Sub mymacro(theValue As String)


            Dim xOutApp As Object
            Dim xOutMail As Object
            Dim xMailBody As String
            Set xOutApp = CreateObject("Outlook.Application")
            Set xOutMail = xOutApp.CreateItem(0)
            xMailBody = "Hi there" & vbNewLine & vbNewLine & _
                      "The value that changed is in cell: " & theValue

            On Error Resume Next
            With xOutMail
                .To = "email address"
                .CC = ""
                .BCC = ""
                .Subject = "test succeeded"
                .Body = xMailBody
                .Display   'or use .Send
            End With
            On Error GoTo 0
            Set xOutMail = Nothing
            Set xOutApp = Nothing
        End Sub

逻辑是可以的(我认为),但主要的问题是,我总是被Excel提示从宏表中选择我的宏,而我的宏甚至不存在!好像我从来没有创造过一个。我试图找到关于这个问题的一些信息,但它无处可寻。换句话说,我怎样才能让这个宏按照我想要的方式工作?我对VBA一无所知,所以如果我的问题显得愚蠢,请原谅。如果您需要更多信息来了解问题,请告诉我。谢谢大家!

1 个答案:

答案 0 :(得分:0)

Worksheet_Change是一个通常位于私人工作表代码表上的事件宏;不是公共模块代码表。它还需要一个非可选的非变量参数。当需要非变量参数时,子程序(您称之为)未在“宏”对话框中列出。