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


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

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

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


加好友 发短信
等级:超级版主 帖子:105926 积分:538693 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/14 14:36: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 i = ws.Range("iv1").End(MsExcel.XlDirection.xlToLeft).Column
msgbox("第一行最后一个非空单元格列号为" & i)
App.quit


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


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

用了两个循环取出最大有效行和有效列,第一个循环得出结果没有问题,第二个循环就直接报错,是不是我哪里写的不对?老师帮助看看
For i As Integer =1 To rg.Columns.count
   Dim r = ws.cells(rg.Rows.count,i).End(MsExcel.XlDirection.xlUp).Row
   If r > RowsMax Then
   RowsMax = r
   End If
Next

For i As Integer = 1 To rg.Rows.count
   Dim r = ws.cells(16384,i).End(MsExcel.XLDirection.xlToLeft).Column
    If r > ColMax  Then
    ColMax = r
    End If
Next

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


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

执行第二个循环的时候报这个错误 

图片点击可在新窗口打开查看此主题相关图片如下:11111.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/15 11:08:00 [只看该作者]

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 rowsmax As Integer = 0
Dim colsmax As Integer = 0
Dim rg = ws.usedRange

For i As Integer =1 To rg.Columns.count
    Dim r = ws.cells(rg.Rows.count,i).End(MsExcel.XlDirection.xlUp).Row
    If r > RowsMax Then
        RowsMax = r
    End If
Next

For i As Integer = 1 To rowsMax
    Dim r = ws.cells(i,rg.columns.count).End(MsExcel.XLDirection.xlToLeft).Column
    If r > ColsMax  Then
        ColsMax = r
    End If
Next
App.quit

msgbox(RowsMax)
msgbox(colsmax)


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


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

问题解决,多谢老师

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


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

老师帮忙看看,一个是有效行不对,一个是有效列不对不知道什么原因。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目38.rar



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


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

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "EXCEL测试文件\" & "1.xlsx")

Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim rowsmax As Integer = 0
Dim colsmax As Integer = 0
Dim rg = ws.usedRange
For i As Integer =1 To rg.Columns.count
    Dim r = ws.cells(100000,i).End(MsExcel.XlDirection.xlUp).Row
    If r > RowsMax Then
        RowsMax = r
    End If
Next
For i As Integer = 1 To rowsMax
    Dim r = ws.cells(i,200).End(MsExcel.XLDirection.xlToLeft).Column
    If r > ColsMax  Then
        ColsMax = r
    End If
Next
App.quit
msgbox(RowsMax)
msgbox(colsmax)

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


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

把rg.rows.count和rg.columns.count改成了具体的数值满足当前测试EXCEL,会不会处理其他EXCEL时有问题?

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


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

设置成Execl可以支持的最大值不就行了,具体上网搜搜

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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目38.rar


当EXCEL表格最开始的单格格为空时则程序报索引超出范围的错误,请问如何更改

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