一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

VBA操作單元格對(duì)象有哪些常用語(yǔ)句?

 5jia5 2020-04-06




每天一篇Excel技術(shù)圖文
微信公眾號(hào):Excel星球

NO.159-你有一個(gè)名叫單元格的對(duì)象
作者:看見星光
 微博:EXCELers / 知識(shí)星球:Excel

HI,大家好,我是星光。在「零基礎(chǔ)學(xué)VBA編程」前面的章節(jié)里,先后給大家介紹了如何使用VBA代碼實(shí)現(xiàn)單元格遍歷和刪除、查找與替換、排序與合并等;本章再給大家總結(jié)一下其它常用的套路性代碼,涵蓋了選中、清除、復(fù)制粘貼、設(shè)置格式、去重復(fù)、篩選等。內(nèi)容較多,篇幅較長(zhǎng),目測(cè)非常有利于催眠,所以建議睡個(gè)回籠覺,先馬后看。



1丨

選中或激活



以下兩個(gè)語(yǔ)句都可以選中當(dāng)前工作表的A10單元格。



Range('a10').SelectRange('a10').Activate

兩條代碼的作用大部分情況下是相同的,所不同的是Activate可以從被選取的單元格區(qū)域中激活指定單元格。

測(cè)試代碼如下▼







Sub SelectActivate()    Range('a1:c10').Select    '此時(shí)默認(rèn)活動(dòng)單元格為矩形右上角第一個(gè)單元格    '也就是A1    Range('a5').Activate    '在被選取的A1:A10區(qū)域中激活A(yù)5單元格End Sub

代碼運(yùn)行后,系統(tǒng)會(huì)選取A1:C10單元格區(qū)域,并激活A(yù)5單元格。


需要注意的是,不管Select還是Activate都只能在當(dāng)前工作表中選取指定單元格或區(qū)域,如果指定的單元格不是當(dāng)前工作表,會(huì)返回錯(cuò)誤提示。

錯(cuò)誤代碼如下▼




Sub ShtRng() Worksheets('測(cè)試').Range('a1').SelectEnd Sub


正確代碼如下▼






Sub ShtRngR()    Worksheets('測(cè)試').Select    '先選取激活工作表,再選取工作表內(nèi)的單元格    Range('a1').SelectEnd Sub

2丨

清除單元格中的信息


一個(gè)單元格的屬性,不但有內(nèi)容,還有格式、超鏈接、批注等——所以清除單元格中的信息也就分為了多種情況,如下圖所示。


相關(guān)代碼都可以通過(guò)錄制宏獲取,不過(guò)最常用的有兩條沒有魚,還是需要花費(fèi)7秒時(shí)間記憶一下。

一條是全部清除單元格的各種信息,包括單元格格式、邊框線等。




Sub CellsClear() Cells.ClearEnd Sub

另外一條是只清除單元格的內(nèi)容,保留格式等其他信息,常用于清空模版數(shù)據(jù),以待放置新數(shù)據(jù)。




Sub CellsClearContents()    Cells.ClearContentsEnd Sub

3丨

復(fù)制粘貼


如果我們需要將A1:D5單元格區(qū)域的數(shù)據(jù)復(fù)制到H1:K5區(qū)域,可以使用以下代碼▼




Sub CopyRng1() Range('a1:d5').Copy Range('h1:k5')End Sub

粘貼區(qū)域可以只指定左上角的首個(gè)單元格,系統(tǒng)會(huì)根據(jù)復(fù)制區(qū)域的大小,自動(dòng)擴(kuò)展目標(biāo)區(qū)域,因此以下代碼更為常用。

注意粘貼單元格的變化..▼




Sub CopyRng2()    Range('a1:d5').Copy Range('h1')End Sub

Range對(duì)象的Copy方法完整語(yǔ)法格式如下:


Range.Copy (Destination)

參數(shù)Destination指定了粘貼單元格的目標(biāo)區(qū)域,可以省略,如果省略Excel會(huì)將單元格對(duì)象復(fù)制到剪貼板中。

使用Range對(duì)象的PasteSpecial方法可以將剪貼板的Range粘貼到指定區(qū)域,并可以選擇性的粘貼對(duì)象的部分屬性——這對(duì)應(yīng)了Excel基礎(chǔ)操作中的選擇性粘貼功能。

我舉個(gè)例子。






Sub CopyRng3()    Range('a1:d5').Copy    Range('h1').PasteSpecial xlPasteAll    Application.CutCopyMode = FalseEnd Sub

第2行代碼將A1:D5區(qū)域復(fù)制到剪貼板。第3行代碼將剪貼板內(nèi)單元格對(duì)象的全部?jī)?nèi)容(xlPasteAll)復(fù)制粘貼到以H1單元格為左上角的區(qū)域。

這種復(fù)制粘貼的方式,源單元格區(qū)域會(huì)出現(xiàn)虛線邊框,因此第4行代碼取消剪切或復(fù)制模式并清除移動(dòng)邊框。

……

選擇性粘貼對(duì)話框▼

說(shuō)一下PasteSpecial的完整語(yǔ)法格式▼


Range.PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

Range是粘貼的目標(biāo)單元格或區(qū)域。

Paste指定了粘貼的源單元格區(qū)域的屬性,常用的有格式、列寬、公式、值等。對(duì)應(yīng)上圖的區(qū)域1。

Operation表示粘貼的運(yùn)算,有加減乘除無(wú)等,默認(rèn)為無(wú),對(duì)應(yīng)上圖的區(qū)域2。

SkipBlanks表示是否跳過(guò)空格,默認(rèn)為False,對(duì)應(yīng)上圖的區(qū)域3。

Transpose表示是否進(jìn)行轉(zhuǎn)置,默認(rèn)為False,對(duì)應(yīng)上圖的區(qū)域4。

……

選擇性粘貼的相關(guān)屬性和代碼均可通過(guò)錄制宏獲取,通常并不需要強(qiáng)行記憶。打個(gè)響指,吃一包好多魚,有幾個(gè)常用的套路性語(yǔ)句大家還是需要深入了解一下。

也許你知道,也許你不知道,但很快你就知道的是,直接使用復(fù)制粘貼,不會(huì)將源單元格的列寬復(fù)制到目標(biāo)區(qū)域——但借助選擇性粘貼列寬,可以解決這個(gè)問(wèn)題。







Sub CopyRng4()    Range('a1:d5').Copy    Range('h1').PasteSpecial xlPasteColumnWidths    Range('h1').PasteSpecial xlPasteAll    Application.CutCopyMode = FalseEnd Sub

第2行代碼將源單元格復(fù)制到剪貼板,第3行代碼選擇性粘貼列寬,第4行代碼粘貼全部屬性。

……

有朋友可能會(huì)想,選擇性粘貼還有一個(gè)比較常用的功能,將公式的計(jì)算結(jié)果粘貼為數(shù)值——但這在VBA編程上并不常用。將公式轉(zhuǎn)換為數(shù)值,更常使用的方式是直接賦值▼






Sub CopyValue() Dim rng As Range Set rng = Range('a1').CurrentRegion rng.Value = rng.ValueEnd Sub

第4行代碼將單元格的值屬性,即去除了公式等其他屬性,寫入單元格區(qū)域中,這和復(fù)制后選擇性粘貼數(shù)值相比……刀郎是這么說(shuō)的,它來(lái)得那么快來(lái)得那么直接,就算我心狂野,也無(wú)法將火熄滅……

……

4丨

設(shè)置單元格格式


當(dāng)我們需要將文本型數(shù)值寫入一個(gè)全新的工作表時(shí),由于目標(biāo)區(qū)域默認(rèn)的單元格格式為常規(guī),會(huì)導(dǎo)致文本型數(shù)值出錯(cuò),比如身份證后3位變?yōu)?等。


解決這個(gè)問(wèn)題最簡(jiǎn)單的方法是設(shè)置指定區(qū)域的單元格格式。

示例代碼如下▼








Sub rngFormat()    Dim arr    arr = Worksheets('數(shù)據(jù)表').Range('a1').CurrentRegion    Worksheets('結(jié)果表').Select    Range('d:d').NumberFormatLocal = '@' '設(shè)置文本格式    Range('a1').Resize(UBound(arr), UBound(arr, 2)) = arrEnd Sub

代碼解析:

第3行代碼將數(shù)據(jù)源存入數(shù)組arr。第4行代碼選中名為'結(jié)果表'的工作表。第5行代碼設(shè)置D列單元格格式為文本,避免證件號(hào)數(shù)據(jù)變形。第6行代碼將數(shù)組arr的數(shù)據(jù)寫入指定區(qū)域。

第5行設(shè)置單元格格式的代碼也可以使用▼


Range('d:d').NumberFormat = '@'

NumberFormatLocal是通過(guò)本地用戶語(yǔ)言來(lái)定義單元格格式,NumberFormat是使用通用格式代碼來(lái)定義單元格格式。這在中英文系統(tǒng)下可能會(huì)有差異,比如中文系統(tǒng)常規(guī)格式叫做G/通用格式,但這在英文系統(tǒng)下就不能用了,更推薦使用通用格式General——這點(diǎn)了解一下即可,防止將來(lái)找個(gè)外國(guó)異性朋友嘰里呱啦什么嗯?

不同數(shù)據(jù)類型的格式代碼可以通過(guò)錄制宏獲取,這里不再展開描述。

5丨

刪除重復(fù)項(xiàng)


根據(jù)指定列刪除數(shù)據(jù)區(qū)域內(nèi)的重復(fù)值,可以使用單元格對(duì)象的RemoveDuplicates方法。

舉個(gè)例子,刪除C列重復(fù)的人名,獲取唯一值列表,代碼如下▼




Sub DistinctRngData()    Range('c:c').RemoveDuplicates 1, xlYesEnd Sub

RemoveDuplicates方法語(yǔ)法格式如下:


Range.RemoveDuplicates(Columns,Header)

有兩個(gè)參數(shù),第1個(gè)參數(shù)表示以區(qū)域中第幾列作為刪除重復(fù)項(xiàng)的依據(jù)列,第2個(gè)參數(shù)表示區(qū)域是否包含標(biāo)題行,默認(rèn)不包含。

第1參數(shù)支持使用數(shù)組指定多列數(shù)據(jù)。比如……刪除A:C列區(qū)域中,B:C兩列記錄同時(shí)重復(fù)的數(shù)據(jù),代碼如下▼




Sub DistinctRngData2()    Range('a:c').RemoveDuplicates Array(2, 3), xlYesEnd Sub


6丨

篩選


最后聊一下篩選……算了,還是不聊了,無(wú)賴臉,關(guān)于篩選咱們放到單元格事件里再說(shuō)吧。

打個(gè)響指,關(guān)于單元格對(duì)象的常用操作到此也就算告一段落了。說(shuō)幾句題外話,大部分Excel自帶的功能,比如分列、篩選、查找替換等,都可以通過(guò)數(shù)組循環(huán)的方式實(shí)現(xiàn),而且效率往往也更高,所以大家初期學(xué)習(xí)的重點(diǎn)還是數(shù)組四篇,那是一劍破萬(wàn)法的存在;至于單元格對(duì)象等,可以先了解,用到時(shí)教程里直接抄代碼都是可以的。

總結(jié)一句話就是:不要老是搞對(duì)象。

揮揮手下期再見。

更多零基礎(chǔ)學(xué)VBA編程教程▼
菜單->教程->零基礎(chǔ)學(xué)VBA

練手下載百度網(wǎng)盤..▼
https://pan.baidu.com/s/1kUJEBlZ_z6demPh-onNcEQ
提取碼: 6rdx

練習(xí)..▼
1.清空當(dāng)前工作表所有單元格的信息
2.將'數(shù)據(jù)表副本'的數(shù)據(jù)復(fù)制到'數(shù)據(jù)表',并保持列寬和數(shù)據(jù)格式不變
3.將數(shù)據(jù)表A列的公式計(jì)算結(jié)果轉(zhuǎn)數(shù)值
4.獲取數(shù)據(jù)表C列不重復(fù)人名的名單,并放置到結(jié)果表A列

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    粗暴蹂躏中文一区二区三区| 高清欧美大片免费在线观看| 国产中文字幕一区二区| 狠色婷婷久久一区二区三区| 黄色片一区二区在线观看| 欧美一区日韩二区亚洲三区| 亚洲天堂精品在线视频| 粉嫩一区二区三区粉嫩视频| 亚洲欧美日韩色图七区| 国产熟女一区二区三区四区| 国产精品欧美一区二区三区不卡| 国产又猛又大又长又粗| 日韩成人免费性生活视频| 精品亚洲av一区二区三区| 精品女同在线一区二区| 亚洲女同一区二区另类| 日韩精品在线观看完整版| 国产一级内片内射免费看| 国产成人精品午夜福利| 久久综合狠狠综合久久综合| 日本不卡视频在线观看| 白白操白白在线免费观看| 视频一区日韩经典中文字幕| 亚洲精品福利视频在线观看| 五月天丁香亚洲综合网| 尤物天堂av一区二区| 免费人妻精品一区二区三区久久久| 粉嫩一区二区三区粉嫩视频| 久久综合亚洲精品蜜桃| 国产大屁股喷水在线观看视频| 精品人妻精品一区二区三区| 在线播放欧美精品一区| 午夜福利视频日本一区| 日韩精品少妇人妻一区二区| 国产精品亚洲欧美一区麻豆 | 日韩精品人妻少妇一区二区| 免费在线播放一区二区| 欧美成人精品一区二区久久| 日本婷婷色大香蕉视频在线观看| 中文字幕一区二区免费| 国产激情国产精品久久源|