作者Kamikiri (☒☒)
看板Office
标题[算表] VBA 隐藏栏列後抓不到最後一个有值格
时间Fri Oct 4 12:37:23 2019
软体:OFFICE 365 EXCEL
版本:1908
由於我希望文件的使用范围被限制在A1到AZ20000之间
所以我把BA後的栏跟20001後的列全部隐藏了
但是发现隐藏栏列之後
只要使用Ctrl+End的指令(VBA指令也一样)
就会一律跳到AZ20000=有限范围的最後一格
而不是最後一个有值的格
就算最後的值是写在G8,也照样会跳到AZ20000
除了不要隐藏栏列之外,有办法解决这个问题吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.94.55 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1570163846.A.FE7.html
1F:→ soyoso: 如果是某栏为准来抓取最後一个有值的储存格range.end 10/04 12:54
2F:→ soyoso: 或是范围列内最後一个有值储存格range.find 10/04 12:55
我原本已经有用过Range.End跟range.find,但是达不到我想要的结果
因为最後一个有值格的位置跟值都是不固定的
所以不知道该怎麽处理
SpecialCells(xlLastCell)是最一开始用的,也是不行
※ 编辑: Kamikiri (123.193.189.222 台湾), 10/05/2019 22:33:27
3F:→ soyoso: 不确定range.find是如何使用的,是搜寻"*"且 10/06 10:19
4F:→ soyoso: searchdirection以xlprevius也无法达到要的结果吗? 10/06 10:20
5F:→ Kamikiri: 了解 看来是我没有设好Direction 10/06 14:25
6F:→ Kamikiri: 目前是用Cells.Find().Column & Row抓出最後一格的位置 10/06 14:25
7F:→ Kamikiri: 由於有时候会需要分开使用 所以也分别设成2个变数 10/06 14:26
8F:→ Kamikiri: 已可在有隐藏栏列的情况正常使用 但End系列一律废掉 10/06 14:26
9F:→ Kamikiri: Google也很多国外文章说usedrange会误判 所以建议不用 10/06 14:27
10F:→ Kamikiri: 实际经过测试後 就算没有隐藏栏列 usedrange也常出错 10/06 14:28
11F:→ Kamikiri: 而end系列又是以usedrange去做判断 看来以後别用比较好 10/06 14:29
12F:→ Kamikiri: 感谢教学 10/06 14:29
13F:→ newacc: 通常取A栏最後一格比较常看到的用法是: 10/06 22:40
14F:→ newacc: Range("A" & Rows.Count).End(xlUp) 10/06 22:40
15F:→ newacc: 你的状况,或许可以试试Range("A20000").End(xlUp) 10/06 22:44