[算表] VBA取得跨工作表的工作范围

楼主: home0303 (Blue night)   2018-09-18 01:22:22
软件:EXCEL
版本:2010
在VBA进行中 假如目前在工作表A
而我需要取得工作表B的工作范围最后的列号
如何在不指向工作表B的情况下取得
也就是
Sheets("B").Select
末列 = ActiveCell.SpecialCells(xlLastCell).Row
我希望不要有 Sheets("B").Select 这一句
(某些时候因应自订函数的需求)
请指导 谢谢
作者: newacc (XD)   2018-09-18 03:39:00
你知道它的名字就可以了末列 = Sheets("B").Cells.SpecialCells(...).Row
作者: soyoso (我是耀宗)   2018-09-18 09:22:00
自订函数function的话,可以worksheet.usedrange或range.find来取得;测试function和sub(程序)回传上,于range.specialcells(xllastcell).row的值有些不同https://i.imgur.com/tCGne78.jpg
作者: newacc (XD)   2018-09-18 10:34:00
测试我的SpecialCells(xlLastCell)是回传最右下角的格子所谓最右下是指所有资料中栏号最大的一栏,和所有资料列号最大的一列所产生的交集,有可能是空的,可以加.Address确认其位置,S大code若加上.Address或.Row,结果仍为1吗?刚刚再测了一下,回传格子是上次储存到现在有使用过最右下的格子,因此如果该格被删除,在储存前仍会指向该格,而储存后再次呼叫程式,才会指回资料最右下的格子,这点在应用上可能产生一些bug再测了一次,可以用Sheets("B").UsedRange.SpeicalCells()代替,会随资料范围变动而改变
作者: soyoso (我是耀宗)   2018-09-18 10:56:00
function的测试 https://i.imgur.com/7EwZCym.jpgrow为1,address为$1:$1048576,sub程序则是可得到h13
楼主: home0303 (Blue night)   2018-09-18 15:39:00
好的 谢谢两位!!

Links booklink

Contact Us: admin [ a t ] ucptt.com