【问题标题】:Using checkboxes to create an array使用复选框创建数组
【发布时间】:2017-12-22 00:00:50
【问题描述】:

我为什么要这样做的背景。 我正在创建一个工作程序,这是执行此过程的多种方式之一,用户可以选择他们已执行的测试,使用我制作的用户表单进行大约 50 种可能的测试。从选择中,它会根据选中的复选框遍历每个用户表单,而无需选择另一个测试。

即如果他们选择 1,2,5 那么程序最终将加载 UserForm1 -> UserForm2 -> NOT UserForm3 -> NOT UserForm4 -> UseeForm5

这个想法是,用户选择他们想要的选项,然后根据选择的选项创建一个数组,这个数字取决于选择了哪个复选框。即 CheckBox1 = 1 CheckBox2 = 2 等。

我想我可以从这个数组中选择正确的用户表单,使用 excel 中的 .find 功能和 for 循环。

但是当我在下面运行我的代码时遇到了一个问题,

Sub List_Create()

Dim tests(5) As Integer

        If CheckBox1.Value = True Then
        tests(0) = 1
        Else: tests(0) = 0
        End If
        If CheckBox2.Value = True Then
        tests(1) = 2
        Else: tests(1) = 0
        End If
        If CheckBox3.Value = True Then
        tests(2) = 3
        Else: tests(2)= 0
        End If
        If CheckBox4.Value = True Then
        tests(3) = 4
        Else: tests(3) = 0
        End If
        If CheckBox5.Value = True Then
        tests(4) = 5
        Else: tests(4) = 0
        End If

End Sub

我得到一个

需要运行时 424 错误对象。

调试时哪个在线If CheckBox1.Value = True Then

我的代码哪里出错了?这可能吗,我不确定是否可以?

【问题讨论】:

  • @Mat'sMug 哈哈,是的,我真的需要,我只是使用这种格式,因为我发现它更容易在 VBA 上缩进 4 次,然后粘贴到这里,而不是单独执行每一行。我确定有比我目前的方法更简单的方法来粘贴代码:P
  • @Mat'sMug 喜欢那个网站,但似乎工作得很好。现在会更频繁地使用它。
  • 仅供参考,您可以通过直接从 VBE 编辑器粘贴到此处,然后选择所有代码并按 Ctrl+K 或单击编辑工具栏中的 {} 按钮轻松获得格式正确的代码块(将自动每行添加 4 个前导空格)
  • @Mat'sMug ive 发现每当我尝试使用 Ctrl+K 方法时,它似乎根本不起作用。接下来会尝试{}方法
  • 看到这个问题寻求帮助stackoverflow.com/questions/42811509/…

标签: arrays excel vba checkbox


【解决方案1】:

您需要显式引用用户表单来评估复选框值。

 If userformX.CheckBox1.Value = True Then

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2020-02-05
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多