做了一个,似乎For ...Next 比 Do... Loop好点,后者增加行时有明显的跳跃感.
Dim Ls As String() = {"客户编号","客户名称","合同编号","本金","付息方式","方式","利率","合同现状"}
Dim d1,d2,d3,d As Date
Dim n,n1,i,y,m As Integer
Dim r1,r2 As Row
Dim t As Table
r1 = Tables("合同").Current
d1 = r1("计息开始时间")
d2 = r1("计息结束时间")
y = d1.year
m= d1.month
d = New Date(y,m,Date.DaysInMonth(y,m))
n = DateDiff("m",d1,d2) + iif(d1< d,1,0)
t =Tables("利息")
t.StopRedraw
For i = 0 To n-1
r2 = t.AddNew()
For Each s As String In Ls
r2(s) = r1(s)
Next
If d1<d AndAlso i = 0 Then
d2 = d1
d3 = d
Else
n1 =iif(d1<d,i-1,i)
y = d.AddMonths(n1).year
m = d.AddMonths(n1).month
d2 = New Date(y,m,Date.DaysInMonth(y,m))
y = d.AddMonths(n1+1).year
m = d.AddMonths(n1+1).month
d3 = New Date(y,m,Date.DaysInMonth(y,m))
End If
r2("本期起息日") = d2
r2("本期结息日") = d3
Next
t.ResumeRedraw