你在同一个代码块内exit for两次没有用 上面一个执行后下面那个就没意义了.你可以使用一个变量
dim b2 as boolean = false
For Each dcs As DataCol In DataTables("交换机").DataCols
if b2 then
exit for
end if
For Each drs As DataRow In DataTables("交换机").DataRows
Dim str1 As String = drs(dcs)
Dim str2 As String = e.Row("主机_有线MAC")
Dim b As Boolean = str1.Contains(str2)
If b = True Then
dr("交换机_IP地址") = drs("交换机_IP地址")
dr("交换机_主机名") = drs("交换机_主机名")
dr("交换机_端口")=dcs.name
b2=b
Exit For
Else
dr("交换机_主机名")=Nothing
dr("交换机_IP地址")=Nothing
dr("交换机_端口")=Nothing
End If
Next
Next