學會VBA,菜鳥也高飛 讀書筆記

第一章 VBA是什么

Visual Basic Application

一個Excel文件就是一個工作簿(Workbook)伊佃,一個Excel應用程序可以打開多個Excel文件掂骏,這些工作簿文件統(tǒng)稱為工作簿集合(Workbooks),可以用Workbooks("xxx.xlsx")來表示某個工作簿絮识。一個工作簿文件可以有多個工作表(Worksheet),同一個工作簿的所有工作表統(tǒng)稱為工作表集合(Worksheets)嗽上,可以用Workbooks("xxx.xlsx").Worksheets("Sheet1")來表示工作簿(xxx.xlsx)中的名稱為Sheet1的工作表次舌。ThisWorkbook表示當前工作簿。

類似的兽愤,某個工作表中的所有單元格集合用Cells來表示彼念。Workbooks("xxx.xlsx").Worksheets("Sheet1").Cells(1,1)表示(A1)單元格挪圾。

某個單元格區(qū)域用Range來表示。Workbooks("xxx.xlsx").Worksheets("Sheet1").range("A1")或Workbooks("xxx.xlsx").Worksheets("Sheet1").range("A1:D100")表示相應的單元格區(qū)域逐沙。

第二章 第一個VBA程序

調出“開發(fā)工具”選項卡: Alt+T哲思、O =>“自定義功能區(qū)”的“主選項卡”下方勾選“開發(fā)工具”選項=>“確定”

打開VB編輯器(Visual Basic 編輯器):在“開發(fā)工具”選項卡中或Alt+F11

代碼可以寫在多個地方(可以用相對路徑來簡化對象指代),一般是寫在模塊中吩案。

運行代碼:將光標置于所要執(zhí)行的過程中也殖,點擊運行按鈕或F5

含有VBA代碼的文件要以.xlsm為后綴名來保存。

在未設置的Excel中打開.xlsm中會有警告信息彈出务热,可以在Excel選項中添加“受信任位置”(某個文件夾路徑)來設置以后打開該類文件不再提示警告信息。

第三章 VBA中的等號

這一章就4頁己儒。崎岂。。太汗了吧

就說了VBA中等號“=”就兩層含義:1闪湾、賦值冲甘;2、比較途样。

文中還說了VBA復制的let可省略江醇, ?Let a=1 可以寫作 a=1,還有何暇,每行代碼前加一個以英文冒號結束的標簽陶夜,該標簽并不影響代碼的運行。如裆站,L01: Let a = 1

第四章 VBA編程再探索

這一章也很短条辟,還把一段代碼重復多次,并用單元格名稱的方式把變量有啰嗦了一遍宏胯,唉羽嫡,這樣太溫柔了吧,拜托肩袍,咱能簡單粗暴點不杭棵。。氛赐。

第五章 正式開始VBA編程之旅

就是講到一個循環(huán)語句: For ... to ... Next

For r = 1 to 50000 Step 1 ‘Step省略時魂爪,步長為1

? ? ...

Next

這里在講解循環(huán)時用到了單步執(zhí)行(F8),這是調試的一種方法鹰祸。

講到一點是新建的工作簿文件未保存前是沒有后綴名的甫窟,可是保存后有后綴名的,要注意代碼中相應的調整蛙婴,避免出現指代錯誤粗井。

講到了“錄制宏”功能,可以通過錄制宏來看看相應操作對應的VBA代碼,從而減輕我們記憶負擔浇衬。羅剛君也強調懒构,我們錄制宏并不是為了得到宏,而是為了得到相應的VBA對象和屬性耘擂。

講到一個結構: With ... End With

With Selection.Interior

? ? .Color = 255

End With

下面三段代碼做的事情一樣胆剧,只是形式上越來越簡化

Range("A1:A10").Select

With Selection.Interior

? ? .Color = 255

End With

With ... End With的作用是省去每次寫對象名

Range("A1:A10").Select

Selection.Interior.Color = 255

Select返回一個Selection對象

Range("A1:A10").Interior.Color = 255

Cells(3, 4) 和 Range("D3")效果是一樣的,但是有各有特長醉冤。

Range("A1:D10")? Range("A1", "D10")? Range(Cells(1,1), Cells(10,4)) Range("A1").Resize(10, 4)

CurrentRegion指的是當前區(qū)域由周圍空行或空列圍成的最小區(qū)域秩霍。

第六章 VBA是一種語言

條件結構

If? 條件 Then

條件為真時執(zhí)行的語句

End If? 條件為假時則什么都不執(zhí)行

稍微復雜一點的條件結構

If ?條件 Then

? ? 條件為真時執(zhí)行的語句

Else

? ? 條件為假時執(zhí)行的語句

End If

Cells.Clear 可以清除單元格的內容及格式

更復雜一些的條件結構

If? 條件1 Then

? ? 條件1為真時執(zhí)行的語句

ElseIf 條件2

? ? 條件2為假時執(zhí)行的語句

...

Else

? ? 以上條件都為假時執(zhí)行的語句

End If

分支語句,從上面的多條件結構已經可以延伸出分支語句了蚁阳。

Select Case 表達式或變量

? ? Case 值1

? ? ? ? 為值1時執(zhí)行的語句

? ? Case 值2

? ? ? ? 為值2時執(zhí)行的語句

? ? ...

? ? Case Else

? ? ? ? 不為以上所有值時執(zhí)行的語句

End Select

循環(huán)結構铃绒,之前已經有了For ... to ... Next,下面還有For Each

For Each mysht In ThisWorkbook.Worksheets

? ? mysht.Cells(1, 1).Value = "a111bc" ?'Value可以省略

Next

此外螺捐,還有Do Until循環(huán)

Do Until 退出循環(huán)條件

? ? 循環(huán)語句

Loop

UsedRange對象(數據占用區(qū)域)颠悬,.Rows.Count? .Columns.Count有其獨特的用法。

Exit For ? ?Exit Loop 可以用在跳出相應的循環(huán)體(這顯然不是一個好主意定血,最好還是別用)赔癌。

第七章 Excel就是小怪獸

這一章又是重復,并且通過“小怪獸”的例子來把抽象的計算機概念具體化澜沟、形象化灾票。怎么說呢,面向初學者吧茫虽,減緩學習曲線的陡峭程度铝条,重復呢,是加深印象席噩,便于記憶吧班缰。

第八章 對象! 對象5渴唷埠忘!

其實對象在計算機語言中,就是一個實體馒索,它有著自己的屬性莹妒、方法,并且能夠響應特定的事件绰上。

介紹了Worksheet旨怠、Workbook的內置的事件。

有個小技巧蜈块,按住Shift鍵打開文件可以忽略自動執(zhí)行的宏鉴腻。

這一章內容不少迷扇,尤其是8.7小節(jié)的案例,我覺得可以獨立開一章了爽哎,值得細細體會蜓席。

第九章 VBA變量類型

Sub myVar141()

Dim dMyNum As Long

Dim sMyString As String

sMyString = "1112"

MsgBox sMyString

dMyNum = sMyString

MsgBox dMyNum

End Sub

Sub Example_08_146()

Dim mySheet As Worksheet

Set mySheet = ThisWorkbook.Worksheets("Sheet1")

For r = 1 To 10

mySheet.Cells(r, 1).Value = r

mySheet.Cells(r, 1).Interior.Color = vbRed

mySheet.Cells(r, 1).Font.Color = vbWhite

Next

End Sub

Sub my100num148()

Dim myNum(99)

For i = 1 To 100

myNum(i - 1) = i

ThisWorkbook.Worksheets(1).Cells(i, 1).Value = myNum(i - 1)

Next

End Sub

Sub arrayDemo151()

Dim a(2) As String

a(0) = "one"

a(1) = "two"

a(2) = "three"

ThisWorkbook.Worksheets("Sheet1").Range("A1:E5") = a()

MsgBox UBound(a(), 1)

End Sub

Sub array2DDemo152()

Dim b(2, 3)? '3行4列的數組 數組從0開始計數,UBound返回最大序數课锌,個數=最大序數+1

For i = 1 To 3

For j = 1 To 4

b(i - 1, j - 1) = 10 * i + j

Next

Next

ThisWorkbook.Worksheets("Sheet1").Range("A1:E5") = b()

MsgBox b(1, 1)? ' 22

MsgBox UBound(b(), 1)? '? 2

MsgBox UBound(b(), 2)? '? 3

End Sub

Sub arrayUBoundDemo153()

Dim b(2, 3)

MsgBox UBound(b(), 1)

MsgBox UBound(b(), 2)

End Sub

Sub arrayDemo155()

Dim a()

Dim mySheet As Worksheet

Set mySheet = ThisWorkbook.Worksheets("Sheet1")

a() = mySheet.Range("A1:D3")? '.value可以省略? ? '3行4列的數組厨内,這種從表格中轉換過來的數組從1開始計數,UBound返回最大序數渺贤,個數=最大序數

MsgBox a(1, 1)? ? ? ? ? ? ? ' 11

MsgBox UBound(a(), 1)? ? ? ' 3

MsgBox UBound(a(), 2)? ? ? ' 4

mySheet.Range("H8").Resize(UBound(a(), 1), UBound(a(), 2)) = a()

End Sub

Sub cellsClear()

Cells.Clear

End Sub

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末雏胃,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子志鞍,更是在濱河造成了極大的恐慌丑掺,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件述雾,死亡現場離奇詭異,居然都是意外死亡兼丰,警方通過查閱死者的電腦和手機玻孟,發(fā)現死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳍征,“玉大人黍翎,你說我怎么就攤上這事⊙薮裕” “怎么了匣掸?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長氮双。 經常有香客問我碰酝,道長,這世上最難降的妖魔是什么戴差? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任送爸,我火速辦了婚禮,結果婚禮上暖释,老公的妹妹穿的比我還像新娘袭厂。我一直安慰自己,他們只是感情好球匕,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布纹磺。 她就那樣靜靜地躺著,像睡著了一般亮曹。 火紅的嫁衣襯著肌膚如雪橄杨。 梳的紋絲不亂的頭發(fā)上秘症,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音讥珍,去河邊找鬼历极。 笑死,一個胖子當著我的面吹牛衷佃,可吹牛的內容都是我干的趟卸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼氏义,長吁一口氣:“原來是場噩夢啊……” “哼锄列!你這毒婦竟也來了?” 一聲冷哼從身側響起惯悠,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤邻邮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后克婶,有當地人在樹林里發(fā)現了一具尸體筒严,經...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年情萤,在試婚紗的時候發(fā)現自己被綠了鸭蛙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡筋岛,死狀恐怖娶视,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情睁宰,我是刑警寧澤肪获,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站柒傻,受9級特大地震影響孝赫,放射性物質發(fā)生泄漏。R本人自食惡果不足惜红符,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一寒锚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧违孝,春花似錦刹前、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至校坑,卻和暖如春拣技,著一層夾襖步出監(jiān)牢的瞬間千诬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工膏斤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留徐绑,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓莫辨,卻偏偏與公主長得像傲茄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沮榜,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容

  • 本例為設置密碼窗口 (1) If Application.InputBox(“請輸入密碼:”) = 1234 Th...
    浮浮塵塵閱讀 13,620評論 1 20
  • 1.1 VBA是什么 直到90年代早期,使應用程序自動化還是充滿挑戰(zhàn)性的領域.對每個需要自動化的應用程序,人們不得...
    浮浮塵塵閱讀 21,724評論 6 49
  • 可以通過在屬性窗口設置名稱來給對象重新命名盘榨,名字可以由字母、漢字(2字符)蟆融、數字以及下劃線組成草巡,但必須以字母或漢字...
    重頭再來0706閱讀 2,167評論 0 1
  • 昨天的一件事弥喉,讓我突然意識到:我們中國人似乎向來就沒有認錯的習慣郁竟。 小時候有父母護體,無論做錯什么都有他們庇護档桃,所...
    左知閱讀 1,512評論 7 13
  • CSS的全稱是什么? CSS憔晒,Cascading Style Sheets藻肄,層疊樣式表。 CSS有幾種引入方式拒担?l...
    虛玩玩TT閱讀 202評論 0 1