You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel VBA布尔值功能求助:通过Function_EditableOn控制工作表选择变更事件

嘿,我看你现在的代码问题出在Function_EditableOn还没有实际的判断逻辑——它现在是空的,默认会返回False,所以永远不会触发MsgBox的执行。咱们来一步步把它完善好:

第一步:给函数添加判断逻辑

你需要让Function_EditableOn根据你的实际需求返回TrueFalse。比如举个常见的场景:判断某个控制单元格的值、检查当前时间,或者验证用户权限。这里我用“检查Sheet1的A1单元格是否等于'允许编辑'”作为示例:

Function Function_EditableOn() As Boolean
    ' 替换成你自己的判断条件,比如检查用户、时间、特定单元格状态等
    If ThisWorkbook.Sheets("Sheet1").Range("A1").Value = "允许编辑" Then
        Function_EditableOn = True
    Else
        Function_EditableOn = False
    End If
End Function

第二步:修正事件过程的语法细节

你的Worksheet_SelectionChange里有几个小语法问题(虽然VBA对大小写不严格,但规范写法能避免潜在问题):

  • 关键字IfEnd If的首字母要大写
  • MsgBox作为过程调用时,不需要加括号(如果要加括号,得用Call前缀)
  • 可以简化判断条件,不用写= True,直接写函数名即可

修正后的事件过程:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Function_EditableOn Then
        MsgBox "Work" ' 把这里换成你要执行的特定功能,比如修改单元格格式、调用其他子程序等
    End If
End Sub

额外提示

  • 确保Function_EditableOn和事件过程在同一个工作表模块里(如果放在标准模块里,默认是公共函数,工作表模块也能正常访问)
  • 你可以完全替换函数里的判断逻辑,比如改成Function_EditableOn = Now() > #9:00:00 AM#(判断当前时间是否过了上午9点),或者检查当前登录用户名,完全根据你的需求来调整。

内容的提问来源于stack exchange,提问作者Roma_COm

火山引擎 最新活动