【发布时间】:2016-11-11 20:50:36
【问题描述】:
我是 Excel VBA 的新手,但我有一些来自 Matlab 和 C++ 的小代码过期。
我编写了以下代码,用于在某个单元格更改为包含下拉列表中的某个文本字符串时显示 msgbox 消息:
Options Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$7" Then
If Range("C7").Value = "Blue home" Then
MsgBox "Hello world!"
End If
End If
End Sub
我收到以下错误消息:编译错误:外部过程无效
当我从代码中删除显式选项并关闭 VBE 中工具下的 require 变量声明选项时,代码可以正常工作。因此,选项显式行触发了问题。
是什么导致选项显式出现问题?我无法真正弄清楚我的代码中有任何变量需要声明。
感谢您的帮助!
【问题讨论】:
-
是
Option Explicit不是Options Explicit。 -
为了您的进一步编码,如果您的
Worksheet_Change()子需要编辑同一工作表的任何单元格,然后将Application.EnableEvents = False放在If Target.Address = "$C$7" Then语句之后,Application.EnableEvents = True就在其对应的End If之前 -
代码在普通代码模块中吗?它属于工作表代码模块。
-
谢谢吉普德。这听起来像是一个很好的习惯 user3598756。代码放置在工作表代码模块中。