[爆卦]excel vba offset用法是什麼?優點缺點精華區懶人包

為什麼這篇excel vba offset用法鄉民發文收入到精華區:因為在excel vba offset用法這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者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

你可能也想看看

搜尋相關網站