With Tables("临时过渡取数")
Dim Names As New List(Of String)
Dim zhyh As Integer
If (.rows.count - 3) Mod 2 = 1 Then
For zhcs As Integer = 1 To 4
Dim drs As List(Of DataRow) = DataTables("比赛积分").SQLSelect("[团体赛或个人赛] = '个人赛' And [棋赛名称] = '2020年迎春杯' And [分组] = '综合组' And [第几轮比赛] = " & zhcs & " And [桌号] >" & 0)
If drs.count Mod 2 = 1 Then
Names.Add(drs(drs.count - 1)("姓名"))'添加比赛积分表每一轮最后一行没有对手的集合成员
End If
Next
' MessageBox.Show(Names.count)'注识的代码是方便查看比赛积分表每一轮没对手的具体姓名,测试后不需要这代码的。
' For Each nm As String In Names
' MessageBox.Show(nm)
' Next
' MessageBox.Show(.rows.count - 3 - 1)
If Names.Contains(.Rows(.rows.count - 3 - 1)("姓名")) = True Then'如果Names集合包含临时过渡取数表桌号不为0的最后一行姓名
For zhyh = .rows.count - 3 - 2 To 0 Step - 1'则从临时过渡取数表桌号不为0的最后第二行向上查找
If Names.Contains(.Rows(zhyh)("姓名")) = True Then'如果Names集合包含临时过渡取数表桌号不为0的这一行姓名,则取消执行这行代码,继续下一行查找。
Continue For
ElseIf Names.Contains(.Rows(zhyh)("姓名")) = False Then
' MessageBox.Show(.Rows(zhyh)("姓名"))'测试
'.Rows(zhyh).Move(.rows.count - 3 - 1)'如果Names集合不包含临时过渡取数表桌号不为0的这一行姓名,则退出循环,把这行姓名移到桌号不为0的最后一行。
Exit For
End If
Next
.Rows(zhyh).Move(.rows.count - 3 - 1)'如果Names集合不包含临时过渡取数表桌号不为0的这一行姓名,则退出循环,把这行姓名移到桌号不为0的最后一行,但这行代码无论放在这还是上面注识的地方,都弹窗提示不允许移动行。
End If
End If
End With
[此贴子已经被作者于2022/12/5 13:01:50编辑过]