所以我有这个代码,其功能是如果范围中的单元格值等于数字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一无所知,所以如果我的问题显得愚蠢,请原谅。如果您需要更多信息来了解问题,请告诉我。谢谢大家!
答案 0 :(得分:0)
Worksheet_Change是一个通常位于私人工作表代码表上的事件宏;不是公共模块代码表。它还需要一个非可选的非变量参数。当需要非变量参数时,子程序(您称之为宏)未在“宏”对话框中列出。