完善一下:
Dim n1,n2,y1,M1 As Double
Dim dt1 As DataTable = DataTables("摊销")
Dim drs As List(of DataRow) = dt1.Select("项目 > ''")
Dim ym As String = Forms("窗口1").Controls("ComboBox1").value
y1 =ym.Substring(0,4)
M1 =ym.Substring(5)
dt1.StopRedraw
For Each dr As DataRow In drs
n1 = (y1-dr("进场日期").year)*12 +M1-dr("进场日期").Month
dr("期初摊销") = dr("合同金额")*n1/dr("月数")
Select Case dr("合同状态")
Case "中止合同"
dr("本月摊销") =0
Case "提前完工"
dr("本月摊销") = dr("合同金额") -dr("期初摊销")
Case "正常摊销"
n1 = dr("合同金额")/dr("月数")
If dr.Isnull("确认日期") OrElse dr("进场日期")= dr("确认日期") Then
dr("本月摊销") = n1
ElseIf dr("进场日期") < dr("确认日期") Then
dr("本月摊销") = n1 -dr("期初摊销")
Else
n2 = DateDiff("m",dr("确认日期"), dr("进场日期"))
dr("本月摊销") = n1*(n2+1)
End If
End Select
dr("累计摊销") = dr("本月摊销") + dr("期初摊销")
Next
dt1.ResumeRedraw