Get data from worksheet
從worksheet中cell取數,常見辦法如
with sheet1 name = .cells(i,1) company = .cells(i,2) end with
此方法直接,但是欠缺機動性,假如日後worksheet有任何改動,令到name不是出現在col 1,全部代碼都需要改.
方法1
將各col在代碼頂部定義為常數, 日後需要修改就在頂部定義中修改.修改地方集中到一處,但是還是麻煩
const nameCol = 1 , companyCol = 2 with sheet1 name = .cells(i,nameCol) company = .cells(i,companyCol) end with
Private Enum AllCols nameCol = 1 companyCol End Enum with sheet1 name = .cells(i,AllCols.nameCol) company = .cells(i,AllCols.companyCol) end with
方法2
充分利用Table (Excel 2007 or higher).
先在worksheet中定義Table,再在VBA中通過ListObjects訪問
Const nameCol = "name", companyCOl = "company" set tbl = Sheet1.ListObjects("tableName") with sheet1 For each row in tbl.ListRows name = row.range(, col(nameCol)) company = row.range(, col(companyCol)) 'do something next row end with
方法3
利用ADO, 對於Excel2003, 連本workbook的時候慎防內存洩露
本文受該文啓發, 特此鳴謝