Re: [算表] EXCEL VBA Range.Select 選取指令問題

看板Office作者 (XD)時間4年前 (2019/12/12 01:09), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
我想先說明Select和Selection是什麼 Select是Range物件底下的一個"方法" 對應到鍵鼠操作就是"選取"的這個動作 如:Range("L3").Select,就是選取L3這個儲存格(Range物件)的意思 而Selection是Application物件底下的一個"屬性" 會回傳目前選取的物件 有可能是一個或多個儲存格(Range物件),也有可能是一張圖片之類 以我自己的經驗,只有在人機互動的狀況下才會用到Select和Selection 例如自創一個快捷鍵將選取的儲存格上色、修改數值格式等等 而在一般自動化的過程中,不太需要叫excel把某個物件選起來,再對該物件做事 直接對某物件下指令即可 現在來看看這行程式碼有什麼問題: Selection.AutoFill Destination:=Range.Offset(1).Select Selection.AutoFill 沒有問題,有可能需要操作的儲存格是不特定的,必須由人工指定 Destination:= 也沒有問題,是AutoFill方法中的一個變數名稱 Range.Offset(1).Select 這裡就有兩個問題了 1.Range需要指定參照才會回傳一個Range物件 舉個例來說,在班級裡點名時,"座號3號.起立"才會是某位特定同學站起來 如果只有說"座號.起立",大家應該會一臉黑人問號 2.這個是AutoFill方法中的變數,是為了指定自動填入的範圍 所以這個變數要輸入的是一個Range物件 但Select是叫excel把那個Range物件選起來 excel反而會不知道選起來之後要幹麻 正確的用法就是像你錄製的這個: Selection.AutoFill Destination:=Range("L3:L53") 到這裡,你真正的問題應該是,要怎麼指定資料末端的儲存格? 方式很多,詳見上篇S大的推文 簡單說就是依照你資料的特性,利用S大提到的那些方法、函數找到最後那個儲存格 我自己習慣一招打天下,再依資料做調整 Range("L3", Range("L" & Rows.Count).End(xlUp)) 從L3開始到 Range("L" & 列的總數).End(xlUp) 從L3開始到 L欄最後一個儲存格.End(xlUp) 從L3開始到 L欄最後一個有值的儲存格 前提是L欄最後一個儲存格是空的 所以如果資料會塞那麼滿或那麼後面的話,使用上要特別注意 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.50.225 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1576084152.A.4D4.html
文章代碼(AID): #1TyIAuJK (Office)
文章代碼(AID): #1TyIAuJK (Office)