天天看點

VBA太友善了!學會了之後,工作效率快好幾倍

VBA太友善了!學會了之後,工作效率快好幾倍

一年前我畢業工作,以為Excel隻是複制粘貼,調整格式。

機緣巧合工作恰好是要用到VBA,仿照同僚的代碼隻會寫最基本的Function語句:IF...Else...

四個月前新增賬號,那會幾乎什麼都不懂。雖然寫了幾個月的Function,但是Sub是毛都不知道,還有就是我也算是0基礎。

四個月後(中間兩個月去炒股了,想想都後悔。。。),學會的也隻是用數組,字典的部分用法。還有部分雜七雜八的東西,有些囫囵吞棗了。

好歹自己整理了一個大大的檔案夾,各種代碼都有。腦子裡有了一些底子了,算是邁出了第一步。

VBA太友善了!學會了之後,工作效率快好幾倍

VBA的很多部分,特别是數組和字典,還是很容易接受的。VBA數組,我是和函數數組互相印證學習的,感覺比函數數組簡單。字典,對我來說,就是進階版的VLOOKUP,是以學習起來沒有太多困難。而學會了字典,等于完全掌握了一個對象的學習過程,再學其它的,變得容易很多。。是以可能學習VBA就是要有一個敲門磚,這個磚找對了,門一下子敲開了,路就好走很多。希望你能找到自己的磚。

隻會不是很難的函數。其他的都不懂。聽說VBA是學不完的,是以想學到一般的程度。以下幾點送給你初學的你

1:調試

經常看到新手學習了很長時間的VBA之後仍然不會使用調試功能, 一遇到問題馬上就請教他人, 這樣不利于自身的成長。調試非常重要, 是學習代碼本身

不可或卻的一部分。是診斷, 梳理代碼邏輯的過程, 可以避免邏輯錯誤的重複性發生。善用調試新手很多的問題都可以得到解決, 即可擺脫對他人的依賴性,

自身又得到長足的進步, 一舉兩得。

三個視窗, 三個功能鍵:

地方視窗, 立即視窗, 觀察視窗, F1(幫助), F2(屬性方法), F8(分步執行)

途中診斷:

斷點, stop 等等。

2: 分拆

(1)語句分拆

長而難懂的句子分拆成基本單元, 利用調試功能一個個解決, 很容易就了解了它的含義。

如: intRow = Range("A"& Rows.Count).end(xlup).row

立即視窗:?Rows.Count

Range("A" &Rows.Count).Select

Range("A"&Rows.Count).End(xlup).Select

?Range("A"& Rows.Count).End(xlup).row

用眼睛都可以看到每一步Excel選中的哪個單元格, 那麼自然就不難了解了。這個小範例同時揭示了學習程式過程中一個非常重要的方面: 動手嘗試。

(2)子程式分拆

把一個冗長的程式按照功能拆分成一個個相對獨立的子程式來調用, 使得程式具有一定程度的組織性,結構性,規整性大大提高了代碼的可維護性,擴充性,

重用性。這是貫穿程式語言發展的一條主線, 因為它直接指向了程式開發的終極目的之一:開發效率。

3: 耐心

學習目的明确 ≠ 急于求成。無論學習目的如何直接和明确, 學習的過程仍然不是一蹴而就的, "捷徑"隻能是建立在紮實的階梯式基礎上。

有些新手基本代碼還沒寫利落就開始用界面寫"系統", 甚至還沒學會調試, 結果是步履維艱, 一步一問, 三步一錯, 無以為繼。還有的朋友

學習VBA是為了研究彩票, 還沒學習一星期就開始寫各種計算方法, 自然處處遇"難", 大挫學習興趣, 随之放棄。抱着明确的目的學習是好事,

不管目的是否"明智"(這是另外一個話題), 但明确的目的不等于"急功近利"。學習的程序總是遵循漸進式的規律, 跳躍式的一夜暴富隻能是空中樓閣,

VBA太友善了!學會了之後,工作效率快好幾倍

VBA的優缺點是和其設計定位緊密聯系的, 是相對于其它對比對象而存在的。抛開定位在其适用範圍之外與其它開發語言比較來談VBA的"缺點", 這種比較本身就是有失偏頗的, 因為它就不是為了開發而設計的,是以也就無所謂什麼"缺點"了。

同樣, 基于設計出發點的用途和功能也就不能稱之為"優點"了,本身就是幹這個用的,又何來優點?但這些的确可以作為VBA的特點。聽起來比較混淆,就用2個單詞作為标記更容易區分些: Advantage, Feature。其實稱謂不重要,也沒必要較真分的那麼清。重要的是和定位聯系起來看待VBA的存在及其特點。

1:作為程式語言和其他開發語言比較,VBA的特點:

(1)"天然"強大的輸入輸出平台

對着"大黑框框"學程式一學就是幾年,太沒成就感了,什麼樣的控件能有Excel強大呀。

(2)使用便捷

無需搭建任何環境, IDE,調試器(debugger)齊全;

Office裝機量大,VBA到哪兒基本都可以拿出來用,就像哪部電腦都有浏覽器一樣,JavaScript随時可以用;

無需儲存,編譯,即可運作;代碼資料一體化(同時也是"缺點"),釋出簡單,無需運作環境。

與其它自動化操縱Office的方式相比, 與COM互動更加容易便捷。

(3)簡單易懂,門檻低,學習周期短

為了完整性,還是羅列出一些所謂的"缺點"

2:VBA的"缺點"

(1)不好封裝

(2)需要宿主解釋器的解析,是以速度慢

(3)安全性差

(4)無法提供面向對象的結構式程式設計方式

(5)單線程

(6)................................

概括起來基本上涉及底層,大型應用的方面根本做不到,較為複雜點的應用系統在與資料庫結合後并非不能做到,但仍不适合。

上述"缺點"基本上是腳本語言具有普遍性的"通病", 顯然VBA就不是針對完成上述功能而設計的。但相對于寄生于Office的腳本來言,

VBA是唯一的存在(VSTO不是這樣的方式),獨此一份沒有可以比較的對象,是以優點就無從談起。

VBA太友善了!學會了之後,工作效率快好幾倍

希望你能找到自己的磚。我還是覺得,VBA和函數一樣,多學多練才是王道,殺貼一萬,做不了統帥,也能做大将軍了。