我有一个DataGridView,在保存数据之前,我想检查特定列是否在任何行中有任何重复值。
If DataGridView1.Rows.Count > 2 Then
Dim count As Integer = 0
Dim i As Integer = 0
While DataGridView1.Rows.Count - 1
Dim j As Integer = 1
While DataGridView1.Rows.Count - 1
Dim str As String = DataGridView1.Rows(i).Cells("ColLedger").Value()
Dim str1 As String = DataGridView1.Rows(j).Cells("ColLedger").Value()
If str1 = str Then
count = count + 1
End If
j += 1
End While
i += 1
End While
If count > 0 Then
MsgBox(count)
End If
我的索引超出范围错误。我不确定我做错了什么。
如果可以使用在线工具轻松转换,我也会接受c#的答案。
答案 0 :(得分:1)
这应该有效。我认为你的错误在于While DataGridView1.Rows.Count - 1
行,这是没有意义的。没有Option Explicit
没有错,因为框架可以将整数与布尔值进行比较(True = 1,False = 0),但这不是你想要的。我总是建议启用Option Explicit,方法是将其添加到代码中,或者只是在编译设置中打开它。
Dim Count as integer = 0
For i = 0 To dgv.RowCount - 2
For a = i + 1 To dgv.RowCount - 1
if dgv.Rows(i).Cells("ColLedger").Value = dgv.Rows(a).Cells("ColLedger").Value Then Count += 1
Next
Next
MsgBox(Count.ToString)