Foshan: 由于时间有限,所以不能仔细拜读你的大作,所以下面提出的几点,完全是从代码角度的一点优化 1. 关于Menu的代码一般应该是下面的结构,否则异常退出后,再次打开程序就会有两个菜单
Sub CreatMenu()
On Error Resume Next
' del menu
On Error GoTo 0
'Creat menu
End Sub 2. 大量的If...Else结构,有的可以简化,例如:时间段代码可以改为Select Case,这样结构比较清晰 Select Case Me.ComboBox1.ListIndex
Case Is < 3
Call mytime(new_text3, 0, 0)
Case 4
Call mytime(new_text3, 13, 0)
'......
End Select 3. 模块代码中至少三处用到了类似arr1(k, 11) = arr1(k, 11) + arr1(m, 11)的7行代码,应该使用过程,参考 Sub m()
Dim a(2) As Integer
For i = 0 To 2
a(i) = i
Next
mm a()
For i = 0 To 2
Debug.Print a(i)
Next
End Sub
Sub mm(ByRef b As Variant)
For i = 0 To 2
b(i) = b(i) + 1
Next
End Sub 4. 窗体中结算部分,可以简化为下面的代码,楼主还有类似的代码,请自己改善
因为为CheckBox4本身就是逻辑值,所以应该用Not CheckBox4代替CheckBox4=False的条件,速度会快 If CheckBox3 And ComboBox2 <> "" Then
If Not CheckBox4 Then
Call jsck("不含金额", new_text4)
ElseIf TextBox1 <> "" Or TextBox2 <> "" Then Call jsck("含金额", new_text4)
End If
End If 5.明显表和汇总表中整段代码,除了其中的"明显表"和"汇总表"几个字符区别,其余部分完全相同,应该作为一个过程调用 |