我正在导入一个excel文件,并且在此excel中的一栏中,我们将其命名为CodeName,其可能值为A01,A02,B01,B02。这些是唯一可能的值
是否有可能在datagridview中读取行的内容,并有一个条件,我只能拥有A01,A02,B01或B02?
目前我在想;
'READING every row TESTING
For Each row As DataGridViewRow In DataGridView1.Rows
If -----Then
'MsgBox("content has wrong value")
End If
Next
答案 0 :(得分:1)
正如评论中所说,最好在DataGridView
语句中填充SELECT
语句,该语句仅使用CodeName = YourValues来填充行
尽管回答了您可能会在将来对您有所帮助的问题,我会做这样的事情:
For Each dgvRow As DataGridViewRow In DataGridView1.Rows
If dgvRow.Cells("CodeName").Value Is DBNull.Value Then
MsgBox("Wrong Value")
Else
Select Case dgvRow.Cells("CodeName").Value
Case "A01", "A02", "B01", "B02"
'Do nothing
Case Else
MsgBox("Wrong Value")
End Select
End If
Next
我首先进行NULL
检查,然后使用SELECT CASE
语句,因为在将某些内容与多个值进行比较时,我觉得它比ElseIf
的列表更整齐,但是这完全取决于您。
您可能不希望使用msgBox
,但是如果有很多行不包含您要查找的值,这似乎会很烦人。
也许只需设置dgvRow.Cells("CodeName").Style.BackColor = Color.Red
或其他内容即可,这样您就可以看到错误的值,而不必每次都单击OK。
答案 1 :(得分:0)
另一种方法...定义有效值的数组,然后对要测试的每个值使用数组的.Contains方法。
Dim arr() As String = {"A01", "A02", "B01", "B02"}
For Each row As DataGridViewRow In DataGridView1.Rows
If Not arr.Contains(row.Cells("CodeName").ToString) Then
MsgBox("Wrong")
End If
Next