二維碼 購物車
部落窩在線教育歡迎您!

VBA實(shí)戰(zhàn)入門教程(一):Range對象的選擇和賦值

?

作者:E圖表述來源:部落窩教育發(fā)布時(shí)間:2020-04-23 17:35:06點(diǎn)擊:8351

分享到:
0
收藏    收藏人氣:0人
版權(quán)說明: 原創(chuàng)作品,禁止轉(zhuǎn)載。

編按:

哈嘍,大家好!從今天起,VBA實(shí)戰(zhàn)入門教程就要陸續(xù)與大家見面了。前段時(shí)間關(guān)于讓excel自殺的VBA代碼話題,引起了不少小伙伴的討論,很多人希望部落窩能分享關(guān)于VBA的知識。經(jīng)過精心準(zhǔn)備,我們的第一更VBA最常用的RANGE對象的選擇和賦值來啦!由于這套VBA系列基礎(chǔ)教程會不定時(shí)發(fā)布,請大家注意收藏。

 

說在【前言】前面的話

 

如果你已經(jīng)準(zhǔn)備開始學(xué)習(xí)EXCEL VBA,或者看了此文后對學(xué)習(xí)EXCEL VBA有了絲絲興趣,還想繼續(xù)跟隨作者由淺入深的學(xué)習(xí)VBA,那就在評論區(qū)留言“繼續(xù)VBA!,點(diǎn)一下在看、“關(guān)注”不迷路,你的Call”就是作者寫作的動(dòng)力。

 

【前言】

 

一座冰山浮出海面,我們看得到浮在海面以上的部分,還有一部分卻是浸在海面以下的,如果不考慮海水的密度和水的密度的差異,那么“海面以上體積:海面以下的體積≈1:9”。在EXCEL中也有類似的一個(gè)比例,那就是“日常使用的知識:excel不會應(yīng)用的知識”,但是這個(gè)比例大概有多少就不好說了,因?yàn)槊總€(gè)人掌握EXCEL的程度是不一樣的,不敢說“九牛一毛”,但是大部分的同學(xué)還只是用到“皮毛而已”。當(dāng)你有一天真正的運(yùn)用到了VBA,才會對EXCEL的運(yùn)行原理有更加透徹的理解和使用。

 

【正文】

 

VBAEXCEL中本質(zhì)上是對于操作對象的操作,是對被操作對象的各種屬性和方法的運(yùn)用,將日常我們需要手工操作或者函數(shù)引用的內(nèi)容,編輯成VBA可以識別的語言,在觸發(fā)條件下實(shí)現(xiàn)自動(dòng)化運(yùn)行的過程。下面我們就來介紹幾種“RANGE(單元格區(qū)域)”時(shí)常會用到的操作。

 

 

一、SELECT屬性

 

 

英語中SELECT被譯作“選擇、選定”的意思,也就是我們常說的“選中單元格區(qū)域”,下面舉幾個(gè)例子。

 

1.選擇連續(xù)區(qū)域。例如,我們有一段代碼如下:

 

Sub 選中單元格()

   Sheets("select").Range("A1:D6").Select

End Sub

 

代碼含義:選中《select》工作表的A1:D6單元格區(qū)域。

 

 

2.選擇一個(gè)單元格。如果我們只需要執(zhí)行選擇一個(gè)單元格的操作,那可以按下面的寫法處理,如下:

 

Sub 選中一個(gè)單元格1()

  Range("B1").Select

End Sub

 

Sub 選中一個(gè)單元格2()

  [C2].Select

End Sub

 

Sub 選中一個(gè)單元格3()

  Cells(3,4).Select

End Sub

 

這里我們給出了三段代碼,運(yùn)行效果如下:

 

 

為什么用了三種方式來寫,這里就需要講到單元格在VBA中的表示方法了。

 

<小知識>

 

VBA中對于單元格的表達(dá)方式主要有三種:RANGE、CELLS、中括號。

 

1RANGE:書寫方式是在RANGE表達(dá)式后的括號中,寫出需要被引用的單元格區(qū)域,如上面的A1:D6,或者直接寫某一個(gè)單元格地址A1。注意單元格地址需要用英文狀態(tài)的雙引號括起來才能生效。

2)中括號:這是一種單元格表達(dá)式的簡便寫法,如:[A1:D6]、[A1],不需要加雙引號。

3CELLS:它是一種以行列號鎖定單元格的方式,語法為CELLS(行號,列號)。它只能選定一個(gè)單元格,如上面的CELLS3,4)等同于RANGE"D3")或者[D3]。如果需要使用CELLS表示一個(gè)區(qū)域,可以結(jié)合RANGE,如RANGECELLS1,1),CELLS3,4)),就代表引用A1:D3區(qū)域。

 

相對于上面兩個(gè)小節(jié)的內(nèi)容,細(xì)心的同學(xué)一定可以看到,在我們的代碼中有的指定了工作表,如第1小節(jié)的代碼Sheets("select").Range("A1:D6");有的沒有指定工作表,如第2小節(jié)的那三段代碼,此時(shí)我們就要引用一個(gè)新的概念:ACTIVESHEET。

 

其實(shí)我們在寫這兩個(gè)小節(jié)的內(nèi)容時(shí),建立了兩個(gè)工作表,如下圖:

 

 

在寫第1小節(jié)的內(nèi)容時(shí),我們是選中了“select”工作表之后操作的,此時(shí)的“select”工作表就是ACTIVESHEET工作表,也就是我們常說的“被選中的工作表”或者“前臺顯示的工作表”。

  

而當(dāng)我們的ACTIVESHEET 工作表是“select單元格”工作表時(shí),同學(xué)們還“敢不敢”再運(yùn)行一下“工程:選中單元格”呢?

 

Sub 選中單元格()

   Sheets("select").Range("A1:D6").Select

End Sub

 

作者E圖表述知道你們都“膽大妄為”,但結(jié)果就是代碼報(bào)錯(cuò),因?yàn)?span style="color: red;">SELECT屬性一定要在ACTIVESHEET表中才有效,如果ACTIVESHEET和代碼中SHEETS工作表名稱不一致,則不能運(yùn)行。如果代碼中沒有指定SHEET,那么代碼默認(rèn)只在ACTIVESHEET中運(yùn)行。

 

3.選擇不連續(xù)區(qū)域。舉個(gè)例子,代碼如下:

 

Sub 選中不連續(xù)區(qū)域()

  Range("A1:D6, E10, E1:F3").Select

End Sub

 

VBA中對于選中不連續(xù)區(qū)域的表達(dá)方式,就是用一個(gè)逗號間隔開地址,然后再用英文狀態(tài)下的雙引號將它們括起來,這樣就可以完成引用。

 

 

4.選擇區(qū)域的交集部分。舉個(gè)例子,代碼如下:

 

Sub 選中交集區(qū)域()

  Range("A1:D6 D1:F3").Select

End Sub

 

在例3中,逗號是聯(lián)合引用符,那么區(qū)域的交集部分,在EXCEL中是使用空格連接的。

 

 

這和我們使用工作表函數(shù)的道理是一樣的。怎么?你還不知道工作表函數(shù)的交集引用嗎?寫法都是一樣的,如下圖所示:

 

 

 

二、單元格賦值

 

 

“賦值,顧名思義,其實(shí)就是給某一個(gè)對象的屬性賦予一個(gè)值,按照賦值的規(guī)則,賦予的內(nèi)容可以是數(shù)值、文本等等。當(dāng)然在VBA中值的格式有很多,我們可以先易后難,先了解日常使用的,再去考慮深入研究,這是一個(gè)很重要的學(xué)習(xí)方法,先了解用法,再了解還可以怎么高級的運(yùn)用!

 

1.單元格賦值。給一個(gè)或者多個(gè)單元格賦值的過程,其實(shí)很簡單。想想我們在使用工作表函數(shù)的時(shí)候,是不是需要先輸入一個(gè)“=”,函數(shù)才能生效。這個(gè)“=”就是給單元格賦值的命令符,代碼如下:

 

Sub 賦值1()

  Sheets("單元格賦值").Range("A3") = 6

  Sheets("單元格賦值").Cells(4, 1) = "乘數(shù)"

  Sheets("單元格賦值").[A5] = "被乘數(shù)"

End Sub

 

 

在代碼中,我們依然使用了三種單元格的表示方式,分別給A3、A4、A5單元格進(jìn)行了賦值,這其中有數(shù)值,也有文本,當(dāng)然文本需要使用英文狀態(tài)的雙引號括起來,這個(gè)規(guī)則和工作表中函數(shù)的寫法是一樣的。

 

2.跨表引用,計(jì)算式結(jié)果賦值。我們在工作表“select”中設(shè)置了兩個(gè)數(shù)值,現(xiàn)在將兩個(gè)值的乘積賦值給B3單元格,代碼如下:

 

Sub 賦值2()

  Sheets("單元格賦值").Cells(3, 2) = Sheets("select").Range("B2") * Sheets("select").Range("B3")

End Sub

 

 

select”工作表的B2單元格是4,B36,相乘等于24,用“=”號賦值給了單元格賦值工作表中的Cells3,2)單元格(即B3單元格)。就是如此簡單,只要了解了代碼的表達(dá)式寫法,就可以寫出VBA代碼啦~

 

3.工作表函數(shù)也能在VBA中使用。如果你要匯總一列數(shù)據(jù),是不是馬上就會想到SUM函數(shù),其實(shí)在VBA中一樣可以使用SUM函數(shù)。舉個(gè)例子,代碼如下:

 

Sub 賦值3()

  Sheets("單元格賦值").[C1:C10] = 1

  Sheets("單元格賦值").[C11] = Application.WorksheetFunction.Sum(Sheets("單元格賦值").[C1:C10])

End Sub

 

 

給一個(gè)區(qū)域賦同一個(gè)值,再使用SUM工作表函數(shù)對這個(gè)單元格區(qū)域匯總求和,Application.WorksheetFunction就是調(diào)用工作表函數(shù)的語句。

 

【編后語】

 

看完文章有沒有GET到一些VBA的入門知識呢?作者E圖表述認(rèn)為,VBA不應(yīng)該有初級知識這種說法,因?yàn)楦呒壵Z句也是由這些基礎(chǔ)知識構(gòu)建起來的,先學(xué)基礎(chǔ),再積累思路,相信同學(xué)們一定可以自己寫出代碼。

 

本文配套的練習(xí)課件請加入QQ群:981335662下載。

Excel高手,快速提升工作效率,部落窩教育《一周Excel直通車》視頻和《Excel極速貫通班》直播課全心為你!

掃下方二維碼關(guān)注公眾號,可隨時(shí)隨地學(xué)習(xí)Excel

IMG_256

相關(guān)推薦:

VBA制作疫情地圖《用excel制作全國動(dòng)態(tài)疫情地圖(VBA篇)》

VBA使excel自殺靈異事件!一打開工作簿,文件就“自殺”了???

VBA制作九九乘法表《5種最簡單的用excel制作九九乘法表的方法

VBA設(shè)計(jì)面試提醒表《HR的福音!一張能自動(dòng)提醒面試的excel表格,面試信息再多也不怕看漏!》