【发布时间】:2017-04-26 01:22:21
【问题描述】:
当循环体中存在ELSE 条件时,我似乎无法让我的 For 循环确认我有一个 True IF 条件。这是我写的:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'TEST FIND/SEARCH FEATURES
Dim String2Find As String = txtCPUSerial.Text
Dim ColumnNumber As Integer = 1
'Access the worksheet
Dim xlApp As Excel.Application
xlApp = CreateObject("Excel.Application")
xlApp = GetObject(, "Excel.Application")
Dim xlWB As Excel.Workbook = xlApp.Workbooks.Open("C:\Users\Machine\Desktop\DocDirectory\MyDoc.xls")
Dim xWS As Excel.Worksheet
xWS = xlWB.Worksheets("Sheet1")
'TRY TO LOOP THROUGH THE ROWS..
For x As Integer = 1 To xWS.Rows.Count Step 1
'Check if cell value matches the search string...
If xWS.Cells(x, ColumnNumber).value = String2Find Then
MessageBox.Show("Got it..." & String2Find & " in row " & x)
Else
MessageBox.Show("Item not in the sheet...")
Exit For
End If
Next
End Sub
我尝试在String2Find <> txtCPUSerial.Text 的Else 中写一个直接的语句,但要么语法错误,要么我仍然收到的消息对话框“项目不在工作表中.. .",因此我的 For 循环的 True 部分在单步执行时会被忽略,并且在获得 True 条件时不会返回对话框。
如果我删除我的Else,那么显然代码会相应地循环并返回文本,如果我的工作表中确实存在文本框值(我在工作表中写了一个任意值以查找。我不是什么包括或指定导致这种情况发生的原因?
【问题讨论】:
-
define
syntax blows up您正在将Object与字符串进行比较,所以就是这样 -
步过程序时,
IF statement中String2Find的值是多少?是否正确获取txtCPUSerial.Text? -
想想你的代码第一次在
For循环中做了什么。如果未找到该字符串,您将执行退出For循环 (Exit For) 的If语句的Else块。 -
@BranislavKollár 是的。有趣的是,提到布莱克伍德所说的,当代码第一次找到字符串时,它仍然忽略它,从而运行 Else 条件。如果条件为真,我尝试在 Else 之前放置一个 Exit For 来突破,但它仍然被忽略。
-
@Plutonix 我的意思是在尝试说出类似以下内容时语法不正确:Else 语句中的
(txtCPUSerial.Text <> String2Find)。我收到语法错误。
标签: excel vb.net if-statement for-loop