关闭窗体并且代码导航回到宏时,公共变量没有更新。

我只有两个按钮“是”和“否”创建了表单。当用户单击“否”时,我希望将变量设置为false,如果为“是”,则该变量为true。

这是WorksheetCode

Public bool As Boolean

Sub test2()
    Claims.Show

    If bool = True Then
        Range("A1") = "Yes"
    ElseIf bool = False Then
        Range("A1") = "No"
    Else
        Range("A1") = "Nothing"
    End If
End Sub



下面的表格,我想要一个值

Priate Sub No_Click()
    bool = False
    Unload Me
End Sub

Private Sub Yes_Click()
    bool = True
    Unload Me
End Sub

最佳答案

在不是ThisWorkbook的模块中声明变量。

Public bool As Boolean 'in a module

然后,过程Test2可以位于ThisWorkbook中:

Sub test2()
    Claims.Show

    If bool Then
        Range("A1") = "Yes"
    Else
        Range("A1") = "No"
    End If
End Sub


请注意,bool只能是TrueFalse,没有3ʳᵈ选项。因此可以减少。还要注意,您应该为您的范围指定工作表,例如ThisWorkbook.Worksheets("Sheet1").Range("A1") = "Yes",否则Excel使用有效的工作表。
您想要放置按钮的地方的步骤

Private Sub No_Click()
    bool = False
    Unload Me
End Sub

Private Sub Yes_Click()
    bool = True
    Unload Me
End Sub



我建议始终激活Option Explicit:在VBA编辑器中,转到工具›选项› Require Variable Declaration。那样会产生警告,以防止出现此问题。

10-08 19:57