標籤:

自學 VBA 到中等水平一般需要多久?

如果通過上課來學習,和自學相比會多花多久時間?個人主要是指針對金融領域的 VBA 學習,但是對 VBA 了解甚少,相信 VBA 的應用不僅局限於金融,所以還望各位指點迷津。


如果每天能抽出兩小時來學習,一個月足矣。

第一周:重點打基礎

  • VBA語句對象方法屬性
  • 判斷、循環語句
  • 單元格和文件操作
  • 數組(重中之重)

第二周:開始反覆找例子做練習,有實際工作上的需求最好(書上、網站的)

第三四周:嘗試把之前工作中重複性大的工作內容,用VBA做成自動化。

做完這些你應該會有一些成就感,而且基礎也鞏固得不錯了,自然而然也會有明確的方向了。

上課和自學所花時間對比:

上課:一開始我也想通過上課快速學習,但我一直沒找到專業的VBA培訓機構,如果你發現有合適的培訓班麻煩也告訴我一下,謝謝 O(∩_∩)O~

自學:我就是看VBA視頻教程學一些基礎的,然後就開始嘗試寫一些代碼。

不會的地方就通過錄製宏獲得代碼,或者直接問別人。

(我看的是藍色幻想VBA教程+函數)

我覺得在了解VBA的基礎知識後(變數,循環,數組等),不斷的嘗試寫一些代碼實現所需功能,是最快的學習方式。

------------------------------------------------------------------------------------------

VBA肯定不僅限於金融類,只要你學會基礎內容,後期不會的地方上論壇問問就有人告訴你答案。不限領域。

------------------------------------------------------------------------------------------

另外推薦你看兩個帖子,希望對你有所幫助

菜鳥談VBA最最基礎入門:

http://club.excelhome.net/thread-470603-1-1.html

寫給初學者的隨筆:

http://club.excelhome.net/forum.php?mod=viewthreadtid=992826extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1


看你對中級水平的定義了

我對水平的定義

(以下定義是比較嚴苛的,不要會個循環就叫初級,知道個數組就是中級,那還差的遠)

初級水平:掌握(不是了解)以下知識,能解決簡單問題

1. vba理論基礎

2.變數

3.循環語句

4.excel對象模型

5.對象的方法.屬性.事件

6.自定義函數及容錯

7. 數組基礎

中級水平: 熟練掌握初級水平知識,熟練運用數組+字典解決常見問題,對以下知識做簡單了解,遇到複雜問題知道朝哪個方向努力

1. SQL查詢語句和ADO

2. 正則表達式和網抓

3. 窗體與控制項

4. API 類模塊 等等

高級水平: 學無止境

掌握正確的學習方法,學習動力十足,學習效率較高,保證每天學習2小時以上,達到初級水平大約需要1個半月

學習強度不變,學習方法正確,做了大量示例練習的情況下,達到中級水平需要3-6個月

學習方法1:

1 買一本書從頭到尾快速瀏覽一遍,對知識框架有所了解

2 精讀這本書,跟著書把代碼一字不落的敲幾遍

3 把書中的練習獨立完成,完成不了看答案然後再獨立完成

4 將學到的知識運用到實踐中,解決實際問題,出現問題及時到excel論壇求助

學習方法2:報收費培訓班,看收費視頻


這個問題取決於你眼中的「中等」水平是指什麼水平,以及你本身有沒有編程基礎。假設你本身沒有編程基礎,但是智商中等偏上的話,那麼:

如果是把一些工作中簡單但又重複的步驟寫成小程序,那麼大約需要40個小時吧。

這40個小時,你要做這麼幾件事:

1. 了解如何在Excel選項→信任中心→宏設置中選擇「啟用所有宏」;了解一些基本常識比如說帶有宏的工作簿要保存為.xlsm的格式,也就是啟用宏的工作簿;然後了解怎麼把「開發工具」弄到Excel的功能區;知道用Alt+F11可以調出VBA編輯器;編輯器里的按鈕都是些啥諸如此類的小事。這可能需要一個小時吧。

2. 你要搞明白Excel VBA就是利用代碼來幹活,利用代碼來教Excel去做你要它做的事情。最簡單的一些代碼你看看,比如 Range(「A1」).value = 1, 你可以想想這會是什麼效果,Range是「範圍」的意思,在Excel里range是指一個單元格,那麼Range(「A1」)就是指A1這個單元格,value的意思是「值」,那麼這句話就是說A1 這個單元格的值等於1,要是你程序里寫這樣一句話,然後你一運行程序,那麼A1單元格就會出現一個1.這句代碼就做了給A1單元格賦值這件事。

然後你可以想想這句代碼,MsgBox 「Hello」是什麼意思,MsgBox是message box的簡稱,意思是信息盒子,那麼這句代碼會做的事情就是會彈出一個信息框,框里寫著hello。

所以VBA其實很好理解的,當然你的英語要過四級才行,看到代碼基本能猜到意思。網上找找一些入門小程序,看看代碼隨便猜猜來找一下感覺,可能又一個小時吧。

3. 正題開始了,一般學習VBA都會先學一會兒錄製宏,錄製宏是什麼意思呢,就是你一開始錄製,Excel就開始記錄你做了什麼事情,你停止錄製的時候,Excel就保存了你剛才做的那些操作。

比如說,你用滑鼠先選中A1 單元格,你一點擊錄製宏的時候Excel就會生成一個宏(也叫macro),然後你在A1單元格裡面輸入1,然後點擊停止錄製,Excel就把你的步驟保存在那個剛剛生成的macro里,你要是把A1單元格里的東西刪了,再運行一下macro,你會發現A1單元格里又出現了1. 為什麼呢?因為你剛剛錄製宏的時候就是給單元格A1裡面輸入了1,所以Excel記錄了這個步驟,你再運行這個宏,它就重複你錄製時候的步驟,給A1輸入個1。

你猜這個macro裡面有什麼呢?就像上一條說的,程序是用代碼來控制Excel進行一些操作,那麼錄製宏(macro)要記錄操作,自然就是記錄一些代碼了,也就是說,宏里會出現一句話,

Range(「A1」).value = 1

錄製宏的時候,聰明的Excel自動把你的操作轉為代碼記錄在宏里,那麼運行這個宏就是運行這條代碼,就完美地複製了你的行為了。

了解宏,練習錄製宏,練習完之後看代碼,根據你的需要進行改動,這個過程需要3小時吧,粗略估計。

什麼是看代碼改代碼呢,就比如說,你剛才錄製的那一條是給A1單元格賦值,所以你得到的代碼是Range(「A1」).value = 1, 但是你實際要放到程序里的有兩個動作,你還想給A2單元格賦值2,那麼你就可以直接把上面那條代碼改成Range(「A2」).value = 2. 不需多解釋了吧,看看你就會明白啥意思了。

所以之前的看代碼找感覺練習也是很有用的。

4. 真正開始學習VBA編程,要穩紮穩打,學練結合。這時候就枯燥多了,要學習很多基礎概念,比如說什麼叫常量、變數,數字1是常量,也就是說1就是1,你不會拿它表達別的意思,但是程序中某個數字會隨著程序運行而變化呢,你就不能只寫數字了,你就需要一個變數來放這個數字,那麼就可以自己規定一個變數,比如說給變數取個名叫num,然後你規定這個num是專門用來放整數的,然後你寫個num = 1, 那麼以後用到num就是和用數字1是一樣的效果,然後程序運行了一部分,你又想要將num改成2,那就寫一句num = 2來把變數num的值改成2. 諸如此類的概念,然後一些語法語句,大約需要15個小時。一定要邊看邊動手寫,把一個一個代碼敲出來,才能大致記住這些概念以及語法。

5. 帶著一些邏輯思維來編程並且練習,這個時候要開始構思一些小程序了,不再是那麼三兩句代碼實現一個步驟,而是要用幾十或者幾百行代碼來實現一些獨立的功能。假設你要批量修改單元格格式啦,這樣就會有定義變數;循環打開一個文件夾里的工作簿,每打開一個工作簿就會按你的要求修改格式,然後一直做到最後一個工作簿就算結束程序。做這樣的小程序練習那麼20個小時吧。這些小練習可能會涉及到一些用戶窗體,自定義函數等有些難度的部分,不過也不會難死人了。

經過以上五步練習(大約40小時),VBA算是入門,可以用來幫自己完成一些任務,減輕工作量啦。不過這只是入門。接下來你可以思考如何做獨立的工具,讓其他人也可以使用你的小程序,那麻煩可就又多了至少一倍了,你要設計用戶界面,告訴別人要輸入些什麼,然後防止其他人亂輸入數據,如果別人亂輸入了數據要保證不會死機等等,然後還要做一些查錯報警的小步驟,這些就要在實務中摸索了,你會發現,媽呀,給別人用可真麻煩啊~這些都達到了之後基本就沒啥問題了,再有難點可以去一些論壇看看,很可能別人有相似的問題然後已有大牛幫忙解決,你抄抄他們的代碼就行了,微笑。大不了自己問一個嘛,程序員們都很熱心的。

然後呢,這些其實只是最基礎的使用VBA的步驟,和所有的編程語言一樣,語言只是工具,最重要的是思維,是演算法,這說起來就太多了。

一個有一定編程經驗(也就是演算法有基礎)的人,拿起VBA不過十來個小時的事兒吧~

對了,自學可能會慢一些,看你平時的自學效率了,我不清楚,不過我推薦報班。

覺得自己好嘮叨哦,不過要是有幫助就點個贊嘛。


VBA的語法跟VB6.0是一樣的,基本內容學習起來非常的容易,無論有無編程基礎,一個月就差不多能編寫出有用的小程序了。OFFICE系列都有錄製宏的功能,學習時可以先手動操作一次,然後分析錄製的宏。vba編程基本上都是在操作office的各種對象,比如excel中的range對象。

多去excelhome看看,裡面的教程非常的完善,而且論壇人氣很旺。

真正專業開發的話,現在一般使用vsto。


如果能找到較好的大項目讓你循序漸進,2個月就夠了。最好是那種需求明確的。遇到一個問題就去上網搜一個,你會發現自己水平提高的很快的。

VBA本身的問題都不難,無非是學習怎麼和Excel裡面的一些對象互動罷了。真正難的會是當你項目大了,如何進行版本控制,如何保證代碼跑得夠快,如何保證代碼質量的到保證。而這些都是軟體工程的問題,最好找又經驗的前輩請教下,他們會很樂意回答你的問題的。


可以通過錄製宏改一改學VBA入門,簡單點的需求幾天就能自己編了;

複雜點的要多看別人的代碼來學習,到中等水平的話我覺得應該定位在可以結合自己的工作需求,編一些自定義函數,做一些載入宏什麼的;

更加複雜的插件功能還是留給高手去搞定吧。

對於剛開始學編程,我覺得程序性思維方式的養成比技巧更加重要,得知道怎麼把一個需求到一個個具體的小流程上,技巧方面多看看成熟的代碼相對好掌握些。


其實vba的關鍵點不在於語法,(語法不難)。而在於對office對象,excel,word等等的對象,對象層次結構,對象屬性和方法,對excel函數的熟悉和掌握。因為只有對象才能自動化操作excel


精力好,需要三個月(中間不能有太多的耽擱),精力不好,一年半(事情多,身體欠佳,不能持續學習),有其他語言基礎估計減少一半,主要是熟悉語法的不同寫法.那些說一個月或10天的大神原諒我見到的高人太少,樓主應該不屬於這個范籌.(確實有許多精力好,又有興趣驅動或者利益驅動的人,但只是一小撮罷了)要學到中級,估計就是EXCEL都至少要10天.知乎現在吹牛的多,樓主小心點,優秀回答者除外.


看懂別人的代碼,並嘗試去優化。


vba和vb沒什麼太大的學習區別,學vb需要一年多,vba也得這麼長時間。

如果你把中級水平定義為會操作excel,那估計10天~兩個月就夠了


推薦閱讀:

Excel VBA進階怎麼學,感覺市面上的書都是入門型的?
需要買一本execl vba 有沒有推薦的?
一個word文檔裡邊有很多內容是Access資料庫里的內容,如何能自動綁定到資料庫?
對經濟管理系學生學習編程知識有哪些建議?

TAG:VBA |