【问题标题】:Capture checkbox value in an adjacent cell捕获相邻单元格中的复选框值
【发布时间】:2021-08-06 20:57:39
【问题描述】:

我有一个用户已经用数据填写的原始数据文件。列 A 具有行标题,例如公司名称、公司地址、合作伙伴名称、合作伙伴供应是否合格(此行标题的单元格 C12 中的复选框是、否和 NA,因为行标题文本位于合并的单元格中(列 A12 和 B12 ). B 列有相关数据。我已经设法编写了一个宏来获取所有行标题的数据,而不是使用 for 循环带有复选框的行标题。

我一直在捕获复选框的值(是/否/NA)。问题是,一个单元格中有 2 到 3 个复选框,如果它在一个单元格中,我发现的代码将捕获复选框的值(如果选中则为 TRUE/否则为 FALSE)。此外,如果复选框位于单元格 J30 中,则复选框的值将显示在单元格 K28 中,这使得捕获行标题复选框的值非常困难。

以下是我在其中一个论坛中找到的代码,用于以 TRUE/FALSE 作为结果来捕获复选框值。当一个复选框被选中时,值为 TRUE 并且未选中则为 FLASE。

Sub Link_Check_Boxes()

    Dim chk As CheckBox
    Dim Ws As Worksheet
    
    Set Ws = ActiveSheet
    
    For Each chk In Ws.CheckBoxes
        With chk
            .LinkedCell = .TopLeftCell.Address
        End With
    Next chk

End Sub

我需要你的帮助来解决这个问题。

【问题讨论】:

    标签: excel vba checkbox


    【解决方案1】:

    a) 有一个复选框“是”和另一个“否”没有多大意义,因为一次只能检查其中一个。删除“否”复选框或制作两个单选按钮(“选项按钮”)。复选框的想法是它们独立于任何其他复选框而存在,而单选按钮的想法是一次只能选择其中一个。

    您应该考虑将其他复选框更改为单选按钮以避免“仅选择一个”提示。这样,Excel 会注意只选择一个选项。为此,您需要将选项分组到分组框中。

    您可能不希望这些组“可见”。我不知道如何仅使用 Excel 将它们隐藏,但您可以使用一小段代码来隐藏它们:

    Sub HideGroups()
        Dim ctrl As GroupBox
        For Each ctrl In ActiveSheet.GroupBoxes
            ctrl.Visible = False
        Next ctrl
    End Sub
    

    b) 将复选框或单选按钮链接到单元格。

    我假设您使用表单控件:右键单击,“格式化控件->控件->单元格链接”
    (对于 ActiveX 控件:“属性->链接单元格”)

    无需将控件链接到它所在的单元格。您可以使用工作表隐藏部分或隐藏工作表中的单元格。如果您为单元格命名,则会获得奖励积分。这使得检查所选值非常容易,因为在您的代码中,您不再需要找到复选框,您只需访问链接的单元格。

    【讨论】:

    • 嗨 FunThomas,实际上这是一个由其他人创建的表单,我们有大约 6500 多个这样的表单,我们计划通过捕获所有行标题及其值来创建一个数据库(即,将行标题转换为列标题,将行数据转换为列数据)。这是一次性请求。请帮忙。
    • 所有控件都没有链接到任何单元格?没有人事先想过如何从复选框中获取数据?当然,所有控件都有有意义的名称,例如Checkbox1Checkbox2 ...哇。
    猜你喜欢
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多