返回列表 上一主題 發帖

[發問] 使用End 語法問題

回復 1# wind6424
如果懶的記最末一欄到底是哪一行,
或是希望每個版本都可使用無需考慮差異的話也可用 :

x = Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Column

TOP

luhpro 大,
也不是懶的記最末一欄,
.
.
但是為何由第一個開始搜尋就會錯誤,從後面往前就ok 真是奇怪
wind6424 發表於 2011-11-2 21:13

1. 我所說懶的記最後一行的意思是指當引用上述方式時,
若覺得 IV(即第 256) 欄(或 65536 列)不容易記起來,
可以用 Columns.Count(或 Rows.Count) 較直覺也比較好記.

2. 我的理解是此種搜尋是找內容狀態(有無資料)將要發生變化的那一個儲存格,
所以當資料中有空白儲存格時,
搜尋就會停在這個非我們想要的地方,
自然結果就會是錯的了.

反之來說若你有兩個表格且中間是用空白欄(或 列)來做區隔時,
上述的方式就不適合用來找第一個表格資料的最末欄(或 列)了.

TOP

本帖最後由 luhpro 於 2011-11-12 08:51 編輯
回復  wind6424
End 屬性  定傳回 Range 物件,該物件代表包含來源範圍之區域結尾處的儲存格。等於在工作表中 按 Enter+向上鍵、Enter+向下鍵、Enter+向左鍵或 Enter+向右鍵 ...
GBKEE 發表於 2011-11-11 07:45

抱歉, 做個更正,
我試了一下按 Enter+向下鍵似乎不能出現我們所期望的動作,
我猜應該是 :
等於在工作表中 按 Ctrl+向上鍵、Ctrl+向下鍵、Ctrl+向左鍵或 Ctrl+向右鍵

而且雖然它的定義是 "該物件代表包含來源範圍之區域結尾處的儲存格",
但據我測試結果它的動作應該是 :
若下一格無資料就找第一個有資料的儲存格.
而若下一格有資料就找第一個無資料儲存格的前一格(也就是連續資料區中的最後一格).
若繼續按下同一組按鍵則依上述規則繼續移動焦點,
直到已移動到最末格. (上述每次移動標的的儲存格必然是 "有資料的" 或是 "最末格" 之一)

其關鍵就在於:
假設 Excel 檔中有多列不連續資料,
當我們在儲存格 A1 多次按下 Ctrl+向下鍵 時,
焦點並不會停留在 "第一次找到的儲存格" 上, <雖然它已是 A1 儲存格(同時也是 "第一次找到的儲存格")所在區域的 "區域結尾處的儲存格">
而是會一直移動下去直到最末一列才會停下.

TOP

        靜思自在 : 【為善競爭】人生要為善競爭,分秒必爭。
返回列表 上一主題