Excel VBA代码仅识别单元格公式而非计算结果求助
问题解决:读取公式计算结果并触发邮件发送
问题根源
原代码使用的Worksheet_Change事件仅在单元格内容(如公式本身)被手动修改时触发,不会因公式依赖单元格变化导致的计算结果更新而触发。因此当W2的公式计算结果变化时,代码无法响应。
修改后的代码
Private Sub Worksheet_Calculate() ' 直接检查W2单元格的计算结果 If IsNumeric(Range("W2").Value) And Range("W2").Value > 20 Then Call Mail_small_Text_Outlook End If End Sub Sub Mail_small_Text_Outlook() 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 & _ "This is line 1" & vbNewLine & _ "This is line 2" On Error Resume Next With xOutMail .To = "Email Address" .CC = "" .BCC = "" .Subject = "send by cell value test" .Body = xMailBody .Display 'or use .Send End With On Error GoTo 0 Set xOutMail = Nothing Set xOutApp = Nothing End Sub
关键调整说明
- 替换事件为
Worksheet_Calculate:该事件会在工作表中任何公式计算完成后触发,完美适配公式结果变化的场景。 - 直接读取
Range("W2").Value:获取W2单元格公式计算后的实际数值,无需依赖Target参数。 - 保留原有邮件发送逻辑:仅调整触发条件的触发时机和取值方式,确保邮件功能正常运行。
内容的提问来源于stack exchange,提问作者ChadderO
相关产品推荐
相关产品推荐

