数百个checkbox从True / False更改为Yes / No

我有一个不断更新的电子表格来跟踪对病人的访问。 我有2列,我已经使用下面的VBA代码进入多个checkbox分配到它们所在的单元格。 但是,我想添加一些东西,使我的点击时checkbox的值是或否。 电子表格中有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 

结束小组

当代码创buildcheckbox时,可以添加.OnAction ="MacroName"

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

当它被点击时,这是一个macros指定checkbox。 然后,macros将确定点击checkbox的范围,如果是或者现在,将显示“是”或“否”。

  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 

运行MakeCkBxmacros,然后点击checkbox来获得结果。

我在这里有一个简单的application.caller示例