Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 捕获相邻单元格中的复选框值_Excel_Vba_Checkbox - Fatal编程技术网

Excel 捕获相邻单元格中的复选框值

Excel 捕获相邻单元格中的复选框值,excel,vba,checkbox,Excel,Vba,Checkbox,我有一个原始数据文件,用户已经用数据填充了该文件。列A具有行标题,例如公司名称、公司地址、合作伙伴名称,合作伙伴供应是否合格(此行标题的单元格C12中的复选框Yes、No和NA,因为行标题文本位于合并单元格中(列A12和B12).B列具有相关数据。我已成功编写了一个宏来获取所有行标题的数据,而不是使用for循环的带有复选框的行标题 我一直在捕获复选框的值(Yes/No/NA)。问题是,一个单元格中有2到3个复选框,我找到的代码将捕获复选框的值(如果选中,则为TRUE/else为FALSE)如果在

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

我一直在捕获复选框的值(Yes/No/NA)。问题是,一个单元格中有2到3个复选框,我找到的代码将捕获复选框的值(如果选中,则为TRUE/else为FALSE)如果在一个单元格中。如果复选框在单元格J30中,复选框的值将显示在单元格K28中,这使得很难捕获行标题复选框的值

下面是我在其中一个论坛中找到的代码,用于捕获结果为TRUE/FALSE的复选框值。选中某个复选框时,该值为TRUE,未选中,然后取消选中

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

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

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

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

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

Sub HideGroups()
    Dim ctrl As GroupBox
    For Each ctrl In ActiveSheet.GroupBoxes
        ctrl.Visible = False
    Next ctrl
End Sub
b) 将复选框或单选按钮链接到单元格

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


无需将控件链接到其所在的单元格。可以使用图纸或隐藏图纸的隐藏部分中的单元格。如果您为单元格命名,将获得额外点数。这使得检查所选值非常容易,因为在代码中,您不再需要找到复选框,只需访问链接的单元格即可。

Hi FunThomas,实际上,这是一个由其他人创建的表单,我们有6500多个这样的表单,我们计划通过捕获所有行标题及其值(即,将行标题转换为列标题,将行数据转换为列数据)来创建一个数据库。这是一次请求。请帮助。所有控件都没有链接到任何单元格?没有人提前想到如何从复选框中获取数据?当然,所有控件都有全名,比如
Checkbox1
Checkbox2
。。。哇!