看板 Office 關於我們 聯絡資訊
軟體:EXCEL 版本:2010 在VBA進行中 假如目前在工作表A 而我需要取得工作表B的工作範圍最後的列號 如何在不指向工作表B的情況下取得 也就是 Sheets("B").Select 末列 = ActiveCell.SpecialCells(xlLastCell).Row 我希望不要有 Sheets("B").Select 這一句 (某些時候因應自訂函數的需求) 請指導 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.122.36 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1537204945.A.D8E.html
newacc: 你知道它的名字就可以了 09/18 03:39
newacc: 末列 = Sheets("B").Cells.SpecialCells(...).Row 09/18 03:42
soyoso: 自訂函數function的話,可以worksheet.usedrange或 09/18 09:22
soyoso: range.find來取得;測試function和sub(程序)回傳上,於 09/18 09:22
soyoso: range.specialcells(xllastcell).row的值有些不同 09/18 09:23
soyoso: https://i.imgur.com/tCGne78.jpg 09/18 09:23
newacc: 測試我的SpecialCells(xlLastCell)是回傳最右下角的格子 09/18 10:34
newacc: 所謂最右下是指所有資料中欄號最大的一欄,和所有資料列號 09/18 10:34
newacc: 最大的一列所產生的交集,有可能是空的,可以加.Address確 09/18 10:35
newacc: 認其位置,S大code若加上.Address或.Row,結果仍為1嗎? 09/18 10:35
newacc: 剛剛再測了一下,回傳格子是上次儲存到現在有使用過最右下 09/18 10:42
newacc: 的格子,因此如果該格被刪除,在儲存前仍會指向該格,而儲 09/18 10:42
newacc: 存後再次呼叫程式,才會指回資料最右下的格子,這點在應用 09/18 10:43
newacc: 上可能產生一些bug 09/18 10:43
newacc: 再測了一次,可以用Sheets("B").UsedRange.SpeicalCells() 09/18 10:50
newacc: 代替,會隨資料範圍變動而改變 09/18 10:51
soyoso: function的測試 https://i.imgur.com/7EwZCym.jpg 09/18 10:56
soyoso: row為1,address為$1:$1048576,sub程序則是可得到h13 09/18 10:58
home0303: 好的 謝謝兩位!! 09/18 15:39