Foxtable(狐表)用户栏目专家坐堂 → 老师帮忙看看这个判断和循环是不是有问题?


  共有3303人关注过本帖树形打印复制链接

主题:老师帮忙看看这个判断和循环是不是有问题?

帅哥哟,离线,有人找我吗?
wh420
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
老师帮忙看看这个判断和循环是不是有问题?  发帖心情 Post By:2016/11/11 16:36:00 [只看该作者]

EXCEL中只有一个SHEET一列两行数据,其中有一行是隐藏的,执行下列代码后感觉循环了很多遍才结束(当cbox2.Checked=false不被选中的情况下),老师帮忙看看是不是哪里有问题?

For i As Integer = 1 To rg.Rows.Count
                    If CBox2.Checked OrElse rg.Rows(i).height <> 0 Then
'msgbox(1)
                        For j As Integer = 1 To rg.Columns.Count
'msgbox(2)
                            If CBox2.Checked OrElse rg.Columns(j).width <> 0 Then
'msgbox(3)
                                If ary(i,j) <> Nothing Then
'msgbox(4)
                                    If CBox1.Checked = False OrElse CBox1.Checked = True AndAlso System.Text.RegularExpressions.Regex.Match(ary(i,j),"[\u4e00-\u9fa5]+").Tostring()>""
'msgbox(5)
                                        Dim dr As DataRow = DataTables("内容").AddNew
                                        dr("原文") = ary(i, j)
                                        lbl5.text ="提取内容:" & ary(i,j)
                                    End If
                                End If
                            End If
                        Next
                    End If
                Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/11 17:10:00 [只看该作者]

看不出什么问题。上例子看看

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/11 17:56:00 [只看该作者]

rg.Rows.Count 应该有问题。

 

excel里面的有效行,可能并不是你看到的,一些被编辑过的也可能被判断为有效行

 

看看这里 http://foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=28024&skin=0

 


 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/11/12 0:06:00 [只看该作者]

如果使用这种方式(n = Range("A65536").End(xlUp).Row)那上面的代码应该如何改写?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/12 9:25:00 [只看该作者]

获取实际行数


Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("F:\H\问题测试\abc.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim r = App.ActiveSheet.Range("A65536").End(MsExcel.XlDirection.xlUp).Row
Output.Show(Ws.UsedRange.Rows.Count)
Output.Show(r)
Dim Rg As MSExcel.Range = Ws.Rows("1:" & r)
Output.Show(Rg.Rows.Count)
App.quit

具体问题上传文件测试

 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/11/14 10:47:00 [只看该作者]

Range("A65536")只是获取A列的实际行数,如果要获取所有列的实际行数呢,应该如何写?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/14 11:00:00 [只看该作者]

以下是引用wh420在2016/11/14 10:47:00的发言:
Range("A65536")只是获取A列的实际行数,如果要获取所有列的实际行数呢,应该如何写?

 

参考

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("d:\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim max As Integer = 0
For i As Integer = 1 To ws.UsedRange.columns.count
    Dim r = ws.cells(65536,i).End(MsExcel.XlDirection.xlUp).Row
    If r > max Then
        max = r
    End If
Next
App.quit

msgbox(max)

[此贴子已经被作者于2016/11/14 11:02:21编辑过]

 回到顶部
客人(221.221.*.*)
  8楼


  发帖心情 Post By:2016/11/14 13:23:00 [只看该作者]

谢谢老师,明白了不少
不过要同时解决有效行和列的问题 (ws.UsedRange.columns.count有效列)可以实现吗?

 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/11/14 13:30:00 [只看该作者]

谢谢老师,明白了不少
不过要同时解决有效行和列的问题 (ws.UsedRange.columns.count有效列)可以实现吗?

 回到顶部
帅哥哟,离线,有人找我吗?
wh420
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1107 积分:10562 威望:0 精华:0 注册:2014/2/19 16:32:00
  发帖心情 Post By:2016/11/14 14:10:00 [只看该作者]

有点色老师,在吗,您帮我看看以上的程序能否同时解决:准确获取sheet中有效数据行和有效数据列的问题?

 回到顶部
总数 27 1 2 3 下一页