|
本帖最后由 kokokeke001 于 2020-3-16 16:35 编辑
一直在论坛索取,总想回报一下,却因技能不足(搜什么论坛里都有),未能实现。
今天发现有个微小却常用的东西没人做,刚好我来填空。
也许有人做了我没搜到,如果有请提醒提供连接,方便大家学习。
- '本bas由http://club.excelhome.net论坛kokokeke001编写
- Function getmaxhl() '可获得有数据得最大行列
- usedhang = ActiveSheet.UsedRange.Rows.Count '获取已使用的最大行
- usedlie = ActiveSheet.UsedRange.Columns.Count '获取已使用的最大列
- '在已使用范围内逐行判断有数据的最大列
- For i = 1 To usedhang
- b = ActiveSheet.Cells(i, usedlie).End(xlToLeft).Column 'b=i行最大列向左找有数据的列值
- If b > maxlie Then 'b大于已有最大列时
- maxlie = b '赋值maxlie
- End If
- Next
- '在已使用范围内逐列判断有数据的最大行
- For ii = 1 To maxlie '这里使用已获得得maxlie来替换usedlie,算是一点点优化,实际就算是2013上限的16xxx列,都是点完秒出结果
- b = ActiveSheet.Cells(usedhang, ii).End(xlUp).Row '类似上面,按列找最大有数据行
- If b > maxhang Then
- maxhang = b
- End If
- Next
- '测试完可以注释掉下一行,方便无提示调用
- MsgBox "最大行=【" & maxhang & "】,最大列=【" & maxlie & "】" '可以注释掉
- Dim shuzu(1 To 2) '整了个数组,我也不太明白,反正这样可以调用。
- shuzu(1) = maxhang
- shuzu(2) = maxlie
- getmaxhl = shuzu
- '使过程可以外部调用,调用方法如下:
- 'maxhl = getmaxhl() '获取最大使用行列,这样调用可以一次运行获得行与列
- 'maxhang = maxhl(1) '赋值最大使用行
- 'maxlie = maxhl(2) '赋值最大使用列
- '已知bug1,最大行和列处有合并单元格时会不准,只统计到合并单元格的左上角单元格;
- '已知bug2,ActiveSheet.UsedRange.Rows.Count和ActiveSheet.UsedRange.Columns.Count
- '等于excel允许的最大值时,会报错。
- End Function
复制代码
|
评分
-
1
查看全部评分
-
|