##title##

2019年8月14日

Excel:VBA,使用變數選擇範圍(Range)

自己試著從零開始寫的第一個VBA
Sub ()
v1 = Cells(5, 1)    '對應的列、欄位置,變數訂為v1
v2 = Cells(6, 1)    '對應的列、欄位置,變數訂為v2
'MsgBox (v1)    '訊息彈窗可以用來檢查變數v1
Range(v1 & ":" & v2).Select '選擇目標欄位(已變數回傳值所指定的範圍)
Selection.Copy  '複製所選
End Sub




其中我原本A4位置的公式=COUNTA(1:1)-1,是用來計算A5和A6的=ADDRESS(3,5,4)及=ADDRESS(3,5+A4-1,4),所以可以改寫如下:


v1 = WorksheetFunction.CountA(Range("1:1")) - 1 '計算COUNTA(1:1)-1的值,將變數訂為v1
v2 = Cells(3, 5).Address    '計算ADDRESS(3,5,4)的值,將變數訂為v2
v3 = Cells(3, 5 + v1 - 1).Address    '計算ADDRESS(3,5 +v1 -1,4)的值,將變數訂為v3
Range(v2 & ":" & v3).Select '選擇目標欄位(已變數回傳值所指定的範圍)
Selection.Copy  '複製所選






參考資料:

EXCEL VBA從頭來過-基本語法(上篇)
https://medium.com/@weilihmen/excel-vba%E5%BE%9E%E9%A0%AD%E4%BE%86%E9%81%8E-%E5%9F%BA%E6%9C%AC%E8%AA%9E%E6%B3%95-%E4%B8%8A%E7%AF%87-c2bc76065ecd

提到cells、range


MsgBox 函式
https://docs.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/msgbox-function


如何在Excel VBA使用Excel工作表中的函數
http://wordpress.bestdaylong.com/blog/archives/2547


Thread: Using "Address" function in VBA?
https://www.mrexcel.com/forum/excel-questions/341078-using-address-function-vba.html

沒有留言:

張貼留言