[算表] 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