為什麼這篇vba選取範圍變數鄉民發文收入到精華區:因為在vba選取範圍變數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者newacc (XD)看板Office標題Re: [算表] EXCEL VBA Range.Se...
我想先說明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