嗨,我在这里遇到了问题。我有一个简单的excel文件,我想要做的就是读取列中的所有行并找到一个特定的字符串。但是出现错误,“从字符串转换”START“到'Double'类型无效ERROR',我谷歌并发现它是因为空行。那我怎么可能只是忽略空白行?到目前为止,这是我的代码:
For Each c In xlsWorkSheet.Range("B1:B300").Cells
If IsNothing(c.value) Then
x = x + 1
MessageBox.Show(x)
ElseIf c.Value = "START" Then
MessageBox.Show(x)
End If
Next
第一行是空行,因此输出:1
第二行有一个值并输出:2
但是当它读取没有值/空白的第3行时,它会输出错误。
到目前为止,这是我所做的代码:
For Each c In xlsWorkSheet.Range("B1:B300").Cells
If IsNothing(c.value) Then
x = x + 1
ElseIf Not IsNothing(c.Value) Then
x = x + 1
If c.value.ToString.ToUpper <> "START" And c.value.ToString.ToUpper <> "END" Then
ElseIf c.value.ToString.ToUpper = "START" Then
start = x
ElseIf c.value.ToString.ToUpper = "END" Then
ends = x
End If
End If
Next
MessageBox.Show(start)
MessageBox.Show(ends)
Dim objAdapter1 As New OleDbDataAdapter("SELECT * FROM [WORK SCHEDULE$B" & start & ":I" & ends & "]", objConn)
Dim objDataset1 As New DataSet
objAdapter1.Fill(objDataset1)
DataGridView1.DataSource = objDataset1.Tables(0).DefaultView
此代码已成功运行:)
答案 0 :(得分:0)
由于您想知道'START'是哪一行,请尝试下面的代码。
<强>更新:强>
试试这个:
在LastUsedCol
Dim _findSTART As Excel.Range = Nothing
_findSTART = xlsWorkSheet.Range("B1:B" & lastUsedRow).Find("START", , _
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, _
Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, False)
then update your `objAdapter1`
Dim objAdapter1 As New OleDbDataAdapter("SELECT * FROM [Sheet1$B" & _findSTART.Row & ":I" & lastUsedRow & "]", objConn)