【问题标题】:Hundreds of checkboxes change from True/False to Yes/No数百个复选框从 True/False 变为 Yes/No
【发布时间】:2015-10-28 05:41:34
【问题描述】:

我有一个不断更新的电子表格,用于跟踪患者的就诊情况。我有 2 列,我使用下面的 VBA 代码输入了多个复选框,这些复选框分配给它们所在的单元格。但是,我想添加一些东西,当我单击它们时,使复选框的值为是或否。电子表格中有超过 600 个,所以我需要一些可以同时涵盖所有这些的东西,而不必单独更改每一个。我会发布电子表格的图片,但我还不能,因为我是新用户并且没有声誉积分。有人可以帮忙吗?

Sub AddCheckBoxes()

Dim cb As CheckBox
Dim myRange As Range, cel As Range
Dim wks As Worksheet

Set wks = Sheets("Sheet1")

Set myRange = wks.Range("K2:K300, L2:L300")

For Each cel In myRange

Set cb = wks.CheckBoxes.Add(cel.Left, cel.Top, 30, 6)


With cb

    .Caption = ""
    .LinkedCell = cel.Address

End With

Next

End Sub

结束子

【问题讨论】:

  • 您可以将图像发布到任何公共文件共享(imgur.com 是一个不错的)并编辑您的问题以包含公共链接。通常会有更多代表的人会出现并编辑您的问题以包含链接中的图像。

标签: vba excel checkbox


【解决方案1】:

代码在创建复选框时,可以添加.OnAction ="MacroName"

 With cb
        .LinkedCell = cel.Address
        .Caption = ""
        .OnAction = "YesNoChkBox"    'will call the macro when the checkbox is clicked.
    End With

它的作用是在单击复选框时为其分配一个宏。然后宏会计算出被点击的复选框的范围,如果是真或现在,将显示“是”或“否”。

 Sub MakeCkBx()

    Dim cb As CheckBox
    Dim myRange As Range, cel As Range
    Dim wks As Worksheet

    Set wks = Sheets("Sheet1")

    Set myRange = wks.Range("K2:K21, L2:L21")

    For Each cel In myRange

        Set cb = wks.CheckBoxes.Add(cel.Left, cel.Top, 30, 6)

        With cb
            .LinkedCell = cel.Address
            .Caption = ""
            .OnAction = "YesNoChkBox"    'will call the macro when the checkbox is clicked.
        End With
        cel.HorizontalAlignment = xlRight
    Next

End Sub
Sub YesNoChkBox()
    Dim r As Range, x, CkBx As CheckBox
    Set CkBx = ActiveSheet.CheckBoxes(Application.Caller)
    Set r = Range(CkBx.LinkedCell)

    If CkBx = 1 Then
        r = "yes"
    Else
        r = "No"
    End If
End Sub

运行 MakeCkBx 宏,然后单击复选框以获取结果。

我有一个位于hereapplication.caller 的简单示例

【讨论】:

  • 使用链接单元格而不是TopLeftCell 可能会更好。像这样Set r = Range(CkBx.LinkedCell)
  • 在我看来,OP 想要通过单击来选中或取消选中所有复选框。这会这样做吗?似乎一次只会检查一个。
  • @ClintStreet- 你在问题的什么地方看到了? OP想要显示“是/否”而不是“真/假”,它在哪里说单击按钮以选中/取消选中所有复选框?
猜你喜欢
  • 2013-09-09
  • 2018-04-08
  • 2011-04-09
  • 1970-01-01
  • 2010-10-11
  • 2014-08-07
  • 2019-10-14
  • 2011-01-31
  • 1970-01-01
相关资源
最近更新 更多