城里的月光把夢(mèng)照亮 請(qǐng)守護(hù)它身旁 若有一天能重逢 讓幸福撒滿整個(gè)夜晚……
諸君好,先說(shuō)聲圣蛋節(jié)快樂(lè)~
VBA編程經(jīng)常和“對(duì)象”打交道,其中最頻繁的對(duì)象大概就是“單元格”了。(聽(tīng)說(shuō)您還沒(méi)有對(duì)象?那……我想你大概需要一份Excel,包郵988……)
今天我們就來(lái)聊一下單元格的各種引用方式,比如單個(gè)單元格、行列、連續(xù)和不連續(xù)的單元格區(qū)域、相連的和交叉的單元格區(qū)域等等……。
1,當(dāng)前表所有的單元格
Cells.ClearContents 清空當(dāng)前表所有單元格的內(nèi)容
2,當(dāng)前活動(dòng)單元格
ActiveCell.Value = ''看見(jiàn)星光''
活動(dòng)單元格的值等于聰明可愛(ài)的看見(jiàn)星光。
3,單個(gè)單元格
例如A1單元格,最常用的方式有3種:
[a1]
Range(''a1'') 等同于 Range(''a''&1)
Cells(1,1) 等同于 Cells(1,''a''),也就是說(shuō)列也可以用字母表示。
三種方式里書寫最簡(jiǎn)便的是[a1],運(yùn)算效率最高的是cells(1,1),自帶方法屬性的是Range,最后,后兩種方式支持使用變量。
4,連續(xù)單元格區(qū)域
比如選取A1:B10單元格區(qū)域……
[a1:b10]
Range(''a1:b10'') 等同于 Range(''a'' & 1 & '':b'' & 10)
Range(''a1'',''b10'') 等同于 Range(cells(1,1),cells(10,2)
Range(''a1'').Resize(10,2),意思是以[A1]為起點(diǎn),向下取10行,向右取2列……
第一種方法輸入最簡(jiǎn)便,但不支持變量。第二種方法支持變量,但書寫麻煩,第三種方法比較少用,第四種Resize常用,它也可搭配數(shù)組使用,以便將數(shù)組結(jié)果寫入單元格區(qū)域。
5,不連續(xù)單元格區(qū)域
比如選取A1:A10,C1:C10,F1:F10三個(gè)單元格區(qū)域。
Range(''a1:a10, c1:c10, f1:f10'')
Union(Range(''a1:a10''), Range(''c1:c10''), Range(''f1:f10''))
第一種方法是直接選取,缺乏足夠的靈活性。第二種union是必會(huì)語(yǔ)句,常用于搭配變量進(jìn)行單元格高效批量操作,例如合并單元格處理等等。
6,行和列
比如第一行
Rows(1)
Range(''a1'').EntireRow
Rows(''1:2'') 第1和2行
比如第一列
Columns(1)
Columns(''a:a'')
Range(''a1'').EntireColumn
7,數(shù)據(jù)相連的單元格區(qū)域
例如以A1為點(diǎn),數(shù)據(jù)相連的單元格區(qū)域。
Range(''a1'').CurrentRegion.Select
如果一個(gè)表格的數(shù)據(jù)足夠規(guī)范(字段和記錄不缺失),我們通常使用CurrentRegion來(lái)選取整份表格的數(shù)據(jù)。
8,當(dāng)前表已使用的單元格區(qū)域
ActiveSheet.UsedRange.Select
這里需要說(shuō)明的是,一張表格,即便從未輸入任何數(shù)據(jù),它依然存在UsedRange,也就是默認(rèn)的A1單元格。因此……使用UsedRange并無(wú)法直接判斷一張表格是否空白……
以下語(yǔ)句清除當(dāng)前表格除了第一行以外的內(nèi)容,常用于保存標(biāo)題,清除明細(xì)記錄。
ActiveSheet.UsedRange.Offset(1).ClearContents
9,交叉的單元格區(qū)域
比如選取當(dāng)前表c:d列已使用的單元格區(qū)域,也就是C:D列和當(dāng)前表已使用的單元格區(qū)域交叉的部分……
Intersect([c:d], ActiveSheet.UsedRange).Select
10,以某個(gè)單元格或區(qū)域偏移取值
例如已知變量K,并假定K=10
以A1單元格為起點(diǎn),向下移動(dòng)K行后的指定單元格:
[a1].Offset(K, 0).Select
注意,該語(yǔ)句選取A11單元格,不是A10。
Offset第二參數(shù)可以省略,省略意味為0,以上語(yǔ)句也可以簡(jiǎn)寫成:
[a1].Offset(K).Select
另外,Offset參數(shù)可以為負(fù)數(shù)。
……
以A1單元格為起點(diǎn),向下擴(kuò)展K行1列后的指定單元格區(qū)域:
[a1].Resize(k, 1).Select
注意,該語(yǔ)句選取A1:A10單元格區(qū)域,不是A1:B10。
Resize第二參數(shù)也可以省略,但省略意味為1,以上語(yǔ)句可以簡(jiǎn)寫成:
[a1].Resize(k).Select
Resize的參數(shù)不能為0(選取的單元格區(qū)域不可能是0行或0列)或負(fù)數(shù)。
11,特殊單元格定位
類似于基礎(chǔ)操作中的定位功能(快捷鍵F5或Ctrl G)。
比如定位一張表的錯(cuò)誤值單元格:
Cells.SpecialCells(xlCellTypeFormulas, 16).Select
再比如快速刪除A列單元格為空白的記錄行:
Columns(''A:A'').SpecialCells(xlCellTypeBlanks).EntireRow.Delete
相關(guān)語(yǔ)句均可以通過(guò)錄制宏獲取,初學(xué)階段并不需要刻意去記憶。
……
就醬紫,溫暖的擁抱,安,愛(ài)你們。
聯(lián)系客服