2018.02.16:發(fā)現(xiàn)最早的版本居然漏了如何運行代碼這一點,還有有個認真的讀者想跟著實驗時候發(fā)現(xiàn)2007版跟著我的說明是找不到加開發(fā)工具的地方的。所以趁著大年初一有空我更新了一下第一篇VBA的文章,增加了2007EXCEL版本的開發(fā)工具增添辦法和(一 在哪碼代碼處)和二 如何運行代碼。以下是V2版本:
作為一只財務狗(沒錯,就是我),和Excel打交道簡直是一件再正常不過的事情了。你每天無數(shù)次的和Excel打交道,每個月也許還無數(shù)次的從各種系統(tǒng)中導出各種的表再做基本分豪無差的手工加工。同時你也許還在懷疑人生。說好的高大上的可以對過往財務數(shù)據(jù)分析來給公司戰(zhàn)略一些input,可是每天機械的出報表關(guān)賬已經(jīng)占據(jù)了八小時(甚至還多)的時間,哪有閑工夫去做分析?
也許你不是一只和我一樣的財務狗,而是一個高大上的HR。在每個月底算工資算五險一金算獎金的時候,是不是也在碎碎念為啥每個月都要做這種無聊的毫無技術(shù)含量的活?
除此之外,收集CASE的時候我還看到了辦公室部門,生產(chǎn)計劃部門等等各種工作崗位的小伙伴們對重復無趣勞動的申訴。
其實,幾乎所有的,有邏輯的重復性的做表工作,是可以通過碼代碼(VBA)來實現(xiàn)自動化的。VBA還可以實現(xiàn)跨軟件的操作,比如給每個客戶自動發(fā)送對賬單,把excel的內(nèi)容填寫到每個單獨的word文檔,等等等等。
我會慢慢寫一點VBA方面的小文章,但是這不是一個系統(tǒng)的教程,只是希望你能發(fā)現(xiàn)提高工作效率的方法,盡快上手寫出一點小小的程序。
一
在哪碼代碼?
常用的辦法有兩個:
1. 通過菜單欄的開發(fā)工具 - Visual Basic進入
也許你在你的Excel菜單欄會找不到開發(fā)工具這個東東,那是因為你從來沒有用過。在文件-選項-自定義功能區(qū)中可以把開發(fā)工具調(diào)出來喲
對于在使用EXCEL2007的小伙伴們,你們加開發(fā)工具的地方不在自定義功能區(qū),而在EXCEL選項-常規(guī)內(nèi)。
2. 方法2就更加簡單粗暴了,ALT F11快捷鍵直接進入。
進入之后,界面大概是這個樣子的。
在你需要碼代碼的那張表上,單擊右鍵,選擇插入-模塊,就會出現(xiàn)能讓你碼代碼的窗口了。
通常來說,我建議大家先更改模塊名字為英文名字,有的電腦因為系統(tǒng)語音的問題,中文名字的模塊可能出現(xiàn)開文件報錯全部代碼丟失的問題。辛辛苦苦碼了好一陣子的代碼丟了會讓人抓狂的。
另外,非常重要的一點,要把有代碼的文件,保存成xlsm格式的文件,xlsx的文件是不支持VBA的。
小總結(jié)
ALT F11和開發(fā)工具下的Visual Basic都可以進入編輯器,在表格下新建個模塊開始碼起來吧。文件要存成xlsm格式?。?/p>
二
如何運行代碼
假設你辛辛苦苦的已經(jīng)在代碼窗口內(nèi)胡亂寫了一堆/辛辛苦苦碼上了一堆字母&文字。接下來你要做的,自然就是運行這段代碼,讓Excel幫你來操作每次無聊的重復性工作了。運行有幾個辦法:
1. 在碼代碼窗口,有一個和運行鍵差不多的開始按鈕:
點擊之后會自動運行你光標在的那個宏。如果你的光標不在你寫的過程范圍內(nèi),Excel會跳出窗口讓你選擇運行的宏:
選擇你需要運行的宏,再點運行,就自動開始運行了。
2. 在EXCEL的開發(fā)工具工具欄內(nèi)直接點宏:
Excel跳出宏的執(zhí)行選擇窗口:
一樣選擇你想運行的宏,然后點執(zhí)行即可。
三
對象 - 對象是什么?
別想歪,此對象非彼對象,而是指你在程序中需要控制和操作的東西,它可能是某個表,某個單元格等等。對象和對象之間的關(guān)系,可能像俄羅斯套娃一樣:
Application:代表了EXCEL程序
Workbooks:工作薄
Worksheets:工作表
Range:工作表中的某些單元格
這種一層套一層的對象,中間用.來連接,從高的連接到低的,比如:
Applicaiton.Workbooks('KeepLearn').Worksheets('Sheet1').Range('A1')
那么指的就是KeepLearn這個工作簿中Sheet1的工作表的A1單元格。是不是很簡單?
當然我們并不是每次想指A1都需要從excel的程序application寫起,系統(tǒng)會默認你是在目前活動的工作簿/工作表中選取,所以如果活動的工作表就是Sheet1,你可以直接寫Range(“A1“)
四
對象 - 對象的屬性和方法
對一個對象來說,它既有屬性又有方法。我們還是來做個簡單的類比吧,這次把對象就看成你家里的那個對象
- 屬性是你對象的內(nèi)容或特點,比如你對象的名字,你對象的膚色,你對象的衣服,等等等等。
- 方法則是你對對象的某個操作,比如你給你的對象穿了件新衣服,你親吻了你的對象,或者你換了個對象,咳咳,等等。
對應到Excel中,那么:
- 對象的屬性可能是工作表的名字,某個單元格的字體,字號,顏色
- 對象的方法則可以是打開工作表、復制某個單元格、激活了一個新的對象
小總結(jié)
對象就是你控制和操作的東西,可以是工作簿,工作表,單元格等等。對象有屬性也有方法,要區(qū)分開哦。
五
小例子
其實除了對象還有很多很多的基礎(chǔ)知識,是學任何自然語言或機器語言都避不開的,但是為了讓看的人不被無數(shù)的語法淹死,也更符合我讓你們盡快上手寫出點東西,甚至不問原因只求結(jié)果的目的,我們小例子需要啥,那么上面就只說什么語法。
今天我們的例子很簡單,我們?nèi)慷贾粚ぷ鞑具@個對象進行操作,我們需要新建三個工作簿,保存這三個工作簿在桌面上,保存的時候分別命名為:上海,北京,深圳。
9行代碼就可以達到這個目的啦,而且大家可以看出來其中其實3行基本一樣的代碼重復了三次。我們歸納一下對工作簿的動作其實就以下幾種:
新建工作簿
Workbooks.Add
打開工作簿
Workbooks.Open '路徑'
例如:Workbooks.open 'F:\KeepLearn.xlsm“
激活工作簿
Workbooks('工作簿名').Activate
例如:Workbooks('上海').Activate
同一個時間,活動的工作簿只能有一個,如果你需要激活另外一個工作簿,那么原先的工作簿就自動處于非活動的狀態(tài)了。有些EXCEL的操作也會自動切換活動工作簿,例如上面代碼中的新建工作簿,新建出來的工作簿自動成為當下的活動工作簿。
這點新手碼代碼時候一定要特別注意,因為如果你只寫了Range('A1'),那么程序會自動認為是活動單元表的A1單元格。這種情況下,哪個工作表是活動的就很重要了。
保存工作簿
Workbooks('工作簿名').Save
如果需要保存為新的文件,或者是第一次保存一個新建的工作簿,用的是saveas
Workbooks('工作簿名').Saveas '路徑及文件名“
關(guān)閉工作簿
關(guān)閉所有打開的工作簿:
Workbooks.Close
關(guān)閉指定的工作簿并保存:
Workbooks('工作簿名').Close True
關(guān)閉指定的工作簿并不保存:
Workbooks('工作簿名').Close False
小提示
VBA可以對工作簿這個對象進行新建、打開、保存、關(guān)閉等各種動作。
六
總結(jié)
這真是一篇不倫不類的教材或者分享,如果你還能看到這里,非常感謝。
我自己邊寫邊感覺這個也該說說,那個也該說說,但又擔心一股腦把概念都丟出來,所有人都飛快喪失興趣了。慢慢寫,慢慢平衡吧。有意見歡迎提出來。
這是一個很隨性的公眾號,用來分享公號主自己學到的,用到的,聽到的,感受到的各種亂七八糟的事情,如果你有興趣:
1
歡迎隨手掃一掃關(guān)注公眾號
2
聯(lián)系客服