【问题标题】:Checkbox / Cell link with multiple userforms具有多个用户表单的复选框/单元格链接
【发布时间】:2015-10-19 23:21:23
【问题描述】:

我很难理解 VBA 编码方法(我只有 R 经验)。我正在尝试使用 VBA 将用户表单复选框的值链接到工作表中的特定单元格。

Sub x()
    Dim Range As Range

    If userfrom.checkbox1.Value = True Then
        Range.Offset(0, 7).Value = 1
    Else
        Range.Offset(0, 7).Value = ""
    End If


    If userform.checkbox2.Value = True Then
        Range.Offset(0, 8).Value = 1
    Else
        Range.Offset(0, 8).Value = ""
    End If


    If userform.checkbox3.Value = True Then
        Range.Offset(0, 9).Value = 1
    Else
        Range.Offset(0, 9).Value = ""
    End If

    Unload userform

End Sub

我遇到了将复选框分配给数组的方法,但无法理解线程中的示例。理想情况下,我想做的是声明一个复选框数组以及一个单元格数组 - 并将每个数组中的每个元素链接在一起,即 checkboxArray(1) -> cellArray(1);复选框阵列(2)-> 单元阵列(2);等等

我的一位同事检查了我的代码并说它可以做得更好,即在一行中完成。

这可以实现吗?

【问题讨论】:

  • 在我看来是功课
  • 您可以通过将ControlSource设置为您想要的单元格来设置复选框属性中复选框的单元格值。
  • 更多的是出于好奇。我们正在处理的工作簿非常庞大且资源密集。我想这是一个让代码更高效的问题,因为我们将来可能需要进行进一步的修改,并在这个阶段保留资源。 (我也预计他会试图炫耀他比我知道的更多)。就个人而言,我看不出这种方式会如何降低编码效率。 @ Poof - 不,这不是家庭作业。 @ Scott Holtzman - 这将是处理放置在工作表中而不是用户表单中的复选框的方法。
  • 不,它也适用于用户表单,就像我描述的那样。设置控制源会将复选框的值设置为定义的单元格。
  • @Scott Holtzman - 是的,你是对的。真诚的歉意。但我确实需要动态功能,所以我一开始并不认为这个选项是可行的。您的代码运行良好,谢谢!

标签: arrays vba excel checkbox


【解决方案1】:

您可以简单地将复选框的 ControlSource 设置为工作表中的预定义单元格,然后完全取消代码。

但是,如果您需要它是动态的,根据您正在使用的工作表或范围,这里有一个功能性、高效的解决方案,它不依赖于表单上的复选框数量并且易于更新。

顺便说一句,我不知道它是否实际上可以一行完成。所有整数计数都是从您的 OP 中的代码中获得的。

Sub x()

Dim c As Control

For Each c In Controls

    If TypeName(c) = "CheckBox" Then

        i = Replace(c.Name, "CheckBox", "")

        If c.Value = True Then SetRange i + 6, 1 Else: SetRange i + 6, ""

    End If

Next

End Sub

Sub SetRange(i As Integer, sVal As String)

Dim wks As Worksheet
Set wks = Sheets("Sheet1") 'change to your sheet

With wks

    .Range("A1").Offset(, i).Value = sVal 'change "A1" to desired range

End With

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2013-02-26
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多