您应该做的第一件事是摆脱多余的部分= True
。布尔值的全部意义在于没有必要将它们与其他布尔值进行比较——你只需说if something
or if not something
。否则,你停在哪里?就像是:
If ((chkSO.Value = True) = True) = True Then
无限?
请记住,标准复选框的值(假设它们是您正在使用的复选框)是一个整数,0 表示未选中,1 表示选中,2 表示灰色。因此,您的代码(和我的)依赖于隐式转换为布尔值。如果您不将代码中的框变灰,那将不是问题,因为 0(未选中)将被强制为 false。但是,灰色将被视为已选中 bos。
如果您允许灰显,您可能需要修改代码以将其考虑在内。如何执行此操作取决于您希望如何处理灰显的复选框,而这是只有您才能做出的决定。如果您从未将状态设置为灰色,则可以忽略此段落以及上一段。
if
然后,假设您不能使用数组(如您所说),您至少可以使用该语句的单行变体:
If chkPO.Value Then ReportTaskCount = ReportTaskCount + 1
If chkGRN.Value Then ReportTaskCount = ReportTaskCount + 1
If chkSO.Value Then ReportTaskCount = ReportTaskCount + 1
这应该会使您的代码大小减少大约 75%(基于行数),这是相当大的数量。