以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于终止程序运行的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=149741)

--  作者:czy66ds
--  发布时间:2020/5/11 11:14:00
--  关于终止程序运行的问题
在导入Excel表时,希望实现当Excel表中某指定列的单元格内容不是“已通过”时,终止运行。
我的代码如下:
Dim dlg As New OpenFileDialog \'定义一个新的OpenFileDialog
    dlg.Filter= "Excel2007文件|*.xlsx" \'设置Excel文件筛选器  \'Excel2003文件|*.xls|
    If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
        Dim Book As New XLS.Book(dlg.FileName)  \'获取用户选择的工作簿
        Dim Sheet As XLS.Sheet = Book.Sheets(0) \'工作簿中第一个表
        \'------检查审批记录表是否存在非已通过的记录------------
        For n As Integer = 1 To Sheet.Rows.Count -1  \'n为循环到的行数
            If sheet(n,26).Text <> "已通过" Then
                MessageBox.Show("差旅费列表中存在没有审批通过的记录,请处理!")
                Exit For
                Return 
            End If
        Next
但是没有达到目的,这是为何?


--  作者:czy66ds
--  发布时间:2020/5/11 11:35:00
--  
就是在正式导入前,检查一下excel表某列中是否存在不正确的内容,以决定导入是否正式运行。
--  作者:有点蓝
--  发布时间:2020/5/11 12:12:00
--  
是不是数据里有空格或者其他看不见的字符?

If sheet(n,26).Text.trim() <> "已通过" Then

可以把单元格内容复制到记事本或者word里面看看有没有其他字符

--  作者:czy66ds
--  发布时间:2020/5/11 12:18:00
--  
实际情况是
当sheet(n,26).Text <> "已通过" 时,
MessageBox.Show("差旅费列表中存在没有审批通过的记录,请处理!")正常运行
Return 没运行

--  作者:有点蓝
--  发布时间:2020/5/11 12:19:00
--  
去掉Exit For试试
--  作者:czy66ds
--  发布时间:2020/5/11 12:27:00
--  
去掉Exit For,好了!!这是为何?

--  作者:czy66ds
--  发布时间:2020/5/11 12:33:00
--  
明白了,Exit For挡住了Return
谢谢