首页 > 解决方案 > 需要 Excel VBA 布尔帮助

问题描述

我需要帮助。

我有一个函数

Function Function_EditableOn() As Boolean

End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

if Function_EditableOn = True Then
msgbox("Work")
End if

End Sub

我想从“Function_EditableOn”进行布尔下载,这样如果它等于 true,那么在 Private Sub Worksheet_SelectionChange 中,您将能够执行一些功能,例如,会出现一个铭文

标签: excel

解决方案


我对你的代码做了一些修改。

Function EditableOn() As Boolean
    EditableOn = True
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = Range("A1").Address Then
        If EditableOn = True Then
            MsgBox "Work"
        End if
    End If
End Sub

将 Event 过程保存到任何工作表的代码模块。您可以将函数保存EditableOn到同一模块或标准代码模块。

现在,当您单击将事件过程粘贴到其代码模块中的工作表的 A1 时,该Worksheet_SelectionChange事件将发生并且该名称的过程将触发。实际上,该事件将在每次单击时发生,在工作表中的任何位置,并且该过程每次都会运行,但不会执行任何操作,因为 proc 将单击 ( Target) 的地址与 A1 的地址进行比较,并跳过所有不做的事情不匹配。

由于您单击了 A1 ,因此满足标准并且事件过程将调用该函数EditableOn。该功能什么也不做。也许将来你会让它从互联网上下载一些东西,True只有在下载成功时才返回。目前,该函数只返回True. 它不能返回任何其他东西(现在)。因此,事件过程将显示一个带有消息“工作”的 MsgBox。每次单击 A1 时都会发生这种情况,但您不能连续单击 A1 多次。选择介于两者之间的另一个单元格。


推荐阅读