excel - 返回代码时公共(public)值不会更新 (VBA)

标签 excel vba public

当表单关闭并且代码导航回宏时,公共(public)变量没有更新。

我创建的表单仅使用两个按钮"is"和“否”。当用户单击“否”时,我希望将一个变量设置为 false,如果选择"is",则该变量将为 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

最佳答案

  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 编辑器中,转到工具选项 Require Variable Declaration 。这会生成警告以防止出现此问题。

关于excel - 返回代码时公共(public)值不会更新 (VBA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57807608/

相关文章:

vba - 单元格中的数据验证和组合框 - Workbook_SheetChange 事件不起作用

java - Circle 函数在 Java 类中的行为不符合预期

c# - 在 C# 中显示来自私有(private) int 的值

c# - 部署 Excel UDF

oracle - 如何将数据从Excel复制到oracle?

excel - 在 Excel 中,需要计算从条件格式中着色的单元格,然后创建特定结果的报告

excel - 使用公共(public) VBA 函数更改 Excel 中的单元格颜色背景 - 不是 VBA 程序员

VBA 如何在单元格下方显示用户窗体?

c# - 当前上下文中不存在名称 '...'

vba - Worksheet_Change 事件中的目标范围不正确