使用checkbox检查值进行计算

如果在列E中的文本是“是”,我有一个代码将信息从表格复制到另一个表格。 然后在每行中添加一个checkbox,直到最后一行的数据在下一列中。

我需要以下方面的帮助:我想在另一张纸上做一些计算。 如果checkbox被选中,我想要选中checkbox的行数。 我有这个计数后,我想要计算的(行除以行总数 )的平均值,这个总数包括检查和不检查的行数。

以下是复制信息并添加checkbox的代码:

Sub Copysheet_And_CheckBox2() '<-- you run this CopySheet '<-- you call this first Dim i As Integer Dim LastRow As Integer Dim Search As String Dim Column As Integer Sheets("Audit Items").Activate Sheets("Audit Items").Range("A1").Select 'Sets an Autofilter to sort out only your Yes rows. Selection.AutoFilter 'Change Field:=5 to the number of the column with your Y/N. Sheets("Audit Items").Range("$A$1:$G$2000").AutoFilter Field:=4, Criteria1:="Yes" 'Finds the last row LastRow = Sheets("Audit Items").Cells(Sheets("Audit Items").Rows.Count, "A").End(xlUp).Row i = 1 'Change the 3 to the number of columns you got in Sheet2 Do While i <= 3 Search = Sheets("Form").Cells(1, i).Value Sheets("Audit Items").Activate 'Update the Range to cover all your Columns in Sheet1. If IsError(Application.Match(Search, Sheets("Audit Items").Range("A1:G1"), 0)) Then 'nothing Else Column = Application.Match(Search, Sheets("Audit Items").Range("A1:G1"), 0) Sheets("Audit Items").Cells(2, Column).Resize(LastRow, 1).Select Selection.Copy Sheets("Form").Activate Sheets("Form").Cells(2, i).Select ActiveSheet.Paste End If i = i + 1 Loop CheckBox '<-- and this second into the same call Dim ToRow As Long Dim LastRow2 As Long Dim MyLeft As Double Dim MyTop As Double Dim MyHeight As Double Dim MyWidth As Double LastRow2 = Range("A65536").End(xlUp).Row For ToRow = 2 To LastRow2 If Not IsEmpty(Cells(ToRow, "A")) Then Sheets("Form").Activate MyLeft = Cells(ToRow, "C").Left MyTop = Cells(ToRow, "C").Top MyHeight = Cells(ToRow, "C").Height MyWidth = MyHeight = Cells(ToRow, "C").Width '- ActiveSheet.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select With Selection .Caption = "Yes" .Value = xlOff .LinkedCell = "E" & ToRow .Display3DShading = False If CheckBoxes.Value = True Then CheckBoxes.Value = "1" End With End If Next End Sub 

现在你正在添加控件(即定义它们的属性,如x和y坐标,他们应该在屏幕上可见等,并将其添加到控件集合),但是你不创build任何事件处理程序即“单击控件时执行此操作”,“如果控件被禁用,则执行此其他操作”等)

有一个如何在StackOverflow的Assign事件处理程序中添加事件处理程序的示例,以便在VBA中dynamic创build的用户表单上控制