那你就不要循环build表格。
Dim arys1 As List(of String) = DataTables("测试").GetValues("考号") '记录第一分组列下有多少个不同值
Dim nb As new List(of String)
nb.add("A等级")
nb.add("B等级")
nb.add("C等级")
nb.add("D等级")
Dim shu1 As Integer =0
'建一个临时表,每一个表就作一个图
Dim dtb As New DataTableBuilder("作图")
dtb.AddDef("考号", Gettype(String), 32)
dtb.AddDef("成绩", Gettype(Single))
dtb.build
For Each na As String In arys1
Tables("作图").DataTable.DataRows.Clear
Dim drs As new List(of DataRow)
drs = DataTables("测试").Select("[考号]='" & na & "'")
For Each dr As DataRow In drs
Dim r As Row = Tables("作图").AddNew
For i As Integer =0 To 3
r("成绩") = dr(nb(i))
Next
Next
shu1 =shu1+1
If shu1 = 1100 Then
messagebox.show("已执行1100次")
Return
End If
'运行1000多次就会出错
'对形成的每一个临时表,进行第二部分工作,也就是3000多个学生作3000多个图,所以生成3000多个临时表
'Functions.Execute("ldtzcgths") '这个是作图函数
Next
messagebox.show("已完成作图!")