我的工作簿包含几个工作表,每个工作表都有多个复选框。所有工作表中的所有复选框都有第80行中的链接单元格。在一个名为"Info“的工作表中,我使用countif来计算所有工作表的文本"TRUE”出现在第80行中的总次数。总数在Info!B8中。
每次单元格信息!b8更改时,我都需要调用一个宏。换句话说,每次单击复选框时,链接的单元格都会更改,单元格信息!b8会上升或下降,我需要一个宏来运行。
这是我正在使用的代码,但它什么也不做。我对此进行了研究,从我所能看出的情况来看,它应该是可行的??
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$8" Then
Call CreateFinalWorksheet
End If
End Sub发布于 2017-03-29 04:52:02
假设您的所有CheckBoxes都是表单控件,只要稍加修改CheckBox创建,您就可以实现您想要的东西,而无需LinkedCell和CountIfs等。
示例:下面的CreateCheckBoxes()将为范围内的每个单元格创建一个复选框(“d1:d5”),将其命名为前缀和单元格地址,单击时分配子CheckBoxClicked。
在Sub CheckBoxClicked()中,它将遍历所有工作表(除了命名为"Info"),如果名为then D3的复选框的值为1(勾选),则增加一个计数器。在此之后,如果达到阈值,则调用Sub CreateFinalWorksheet()。
Option Explicit
Private Const ChkBoxPrefix As String = "cbx_"
Private Const ThresholdToCreateFinalWorksheet As Long = 3
Sub CreateChkBoxes()
Dim myCBX As CheckBox, c As Range
For Each c In Range("D1:D5") 'rngCB
With c
Set myCBX = ActiveSheet.CheckBoxes.Add(Top:=.Top, Width:=.Width, Height:=.Height, Left:=.Left)
End With
With myCBX
.Name = ChkBoxPrefix & c.Address(0, 0)
.Caption = "Check Box " & c.Address(0, 0) 'strCap
.OnAction = "CheckBoxClicked" ' "CheckBox_Click"
End With
Next c
End Sub
Sub CheckBoxClicked() ' CheckBox_Click()
Dim oWS As Worksheet, lChecked As Long
On Error Resume Next ' Just in case the named CheckBox does not exist
lChecked = 0
For Each oWS In ThisWorkbook.Worksheets
If oWS.Name <> "Info" Then
' If you need to keep track of more than 1 checkbox in each worksheet, go through them
' If you need all of them to be checked before CreateFinalWorksheet, exit when a checkbox.value = 0
With oWS.CheckBoxes(ChkBoxPrefix & "D3") ' <-- Change to what you need to keep track of
lChecked = lChecked + IIf(.Value = 1, 1, 0)
End With
End If
Next
On Error GoTo 0
If lChecked >= ThresholdToCreateFinalWorksheet Then CreateFinalWorksheet
End Sub
Private Sub CreateFinalWorksheet()
Debug.Print "CreateFinalWorksheet()"
End Sub或者,将事件Sub Worksheet_Calculate()放入Info模块,并检查Info!B8是否足够大以调用CreateFinalWorksheet。
https://stackoverflow.com/questions/43083875
复制相似问题