首页 > 解决方案 > 返回代码(VBA)时,公共值不更新

问题描述

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

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

这是工作表代码

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

标签: excelvbapublic

解决方案


  1. 在不在的模块中声明变量ThisWorkbook

    Public bool As Boolean 'in a module
    
  2. 然后程序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 会使用哪个工作表处于活动状态。

  3. 你想把按钮放在哪里的程序

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

我建议始终激活Option Explicit:在 VBA 编辑器中转到工具选项需要变量声明。这会产生一个警告来防止这个问题。


推荐阅读