作為一只財(cái)務(wù)狗(沒錯(cuò)瞳浦,就是我),和Excel打交道簡直是一件再正常不過的事情了蔓同。你每天無數(shù)次的和Excel打交道传睹,每個(gè)月也許還無數(shù)次的從各種系統(tǒng)中導(dǎo)出各種的表再做基本分豪無差的手工加工。同時(shí)你也許還在懷疑人生模暗。說好的高大上的可以對(duì)過往財(cái)務(wù)數(shù)據(jù)分析來給公司戰(zhàn)略一些input禁悠,可是每天機(jī)械的出報(bào)表關(guān)賬已經(jīng)占據(jù)了八小時(shí)(甚至還多)的時(shí)間,哪有閑工夫去做分析兑宇?
也許你不是一只和我一樣的財(cái)務(wù)狗碍侦,而是一個(gè)高大上的HR。在每個(gè)月底算工資算五險(xiǎn)一金算獎(jiǎng)金的時(shí)候隶糕,是不是也在碎碎念為啥每個(gè)月都要做這種無聊的毫無技術(shù)含量的活瓷产?
除此之外,收集CASE的時(shí)候我還看到了辦公室部門若厚,生產(chǎn)計(jì)劃部門等等各種工作崗位的小伙伴們對(duì)重復(fù)無趣勞動(dòng)的申訴拦英。
其實(shí),幾乎所有的测秸,有邏輯的重復(fù)性的做表工作疤估,是可以通過碼代碼(VBA)來實(shí)現(xiàn)自動(dòng)化的。VBA還可以實(shí)現(xiàn)跨軟件的操作霎冯,比如給每個(gè)客戶自動(dòng)發(fā)送對(duì)賬單铃拇,把excel的內(nèi)容填寫到每個(gè)單獨(dú)的word文檔,等等等等沈撞。
我會(huì)慢慢寫一點(diǎn)VBA方面的小文章慷荔,但是這不是一個(gè)系統(tǒng)的教程,只是希望你能發(fā)現(xiàn)提高工作效率的方法缠俺,盡快上手寫出一點(diǎn)小小的程序显晶。
一?在哪碼代碼?
常用的辦法有兩個(gè):
通過菜單欄的開發(fā)工具 - Visual Basic進(jìn)入
也許你在你的Excel菜單欄會(huì)找不到開發(fā)工具這個(gè)東東壹士,那是因?yàn)槟銖膩頉]有用過磷雇。在文件-選項(xiàng)-自定義功能區(qū)中可以把開發(fā)工具調(diào)出來喲
????2. 方法2就更加簡單粗暴了,ALT+F11快捷鍵直接進(jìn)入躏救。
進(jìn)入之后唯笙,界面大概是這個(gè)樣子的螟蒸。
在你需要碼代碼的那張表上,單擊右鍵崩掘,選擇插入-模塊七嫌,就會(huì)出現(xiàn)能讓你碼代碼的窗口了。
通常來說苞慢,我建議大家先更改模塊名字為英文名字诵原,有的電腦因?yàn)橄到y(tǒng)語音的問題,中文名字的模塊可能出現(xiàn)開文件報(bào)錯(cuò)全部代碼丟失的問題挽放。辛辛苦苦碼了好一陣子的代碼丟了會(huì)讓人抓狂的皮假。
另外,非常重要的一點(diǎn)骂维,要把有代碼的文件惹资,保存成xlsm格式的文件,xlsx的文件是不支持VBA的航闺。
? 小總結(jié)??
ALT+F11和開發(fā)工具下的Visual Basic都可以進(jìn)入編輯器褪测,在表格下新建個(gè)模塊開始碼起來吧。文件要存成xlsm格式A嗜小侮措!
二?對(duì)象 - 對(duì)象是什么?
別想歪乖杠,此對(duì)象非彼對(duì)象分扎,而是指你在程序中需要控制和操作的東西,它可能是某個(gè)表胧洒,某個(gè)單元格等等畏吓。對(duì)象和對(duì)象之間的關(guān)系,可能像俄羅斯套娃一樣:
Application:代表了EXCEL程序
Workbooks:工作薄
Worksheets:工作表
Range:工作表中的某些單元格
這種一層套一層的對(duì)象卫漫,中間用.來連接菲饼,從高的連接到低的,比如:
Applicaiton.Workbooks("KeepLearn").Worksheets("Sheet1").Range("A1")
那么指的就是KeepLearn這個(gè)工作簿中Sheet1的工作表的A1單元格列赎。是不是很簡單宏悦?
當(dāng)然我們并不是每次想指A1都需要從excel的程序application寫起,系統(tǒng)會(huì)默認(rèn)你是在目前活動(dòng)的工作簿/工作表中選取包吝,所以如果活動(dòng)的工作表就是Sheet1饼煞,你可以直接寫Range(“A1“)
三 對(duì)象 - 對(duì)象的屬性和方法
對(duì)一個(gè)對(duì)象來說,它既有屬性又有方法诗越。我們還是來做個(gè)簡單的類比吧砖瞧,這次把對(duì)象就看成你家里的那個(gè)對(duì)象
- 屬性是你對(duì)象的內(nèi)容或特點(diǎn),比如你對(duì)象的名字掺喻,你對(duì)象的膚色芭届,你對(duì)象的衣服,等等等等感耙。
-?方法則是你對(duì)對(duì)象的某個(gè)操作褂乍,比如你給你的對(duì)象穿了件新衣服,你親吻了你的對(duì)象即硼,或者你換了個(gè)對(duì)象逃片,咳咳,等等只酥。
對(duì)應(yīng)到Excel中褥实,那么:
- 對(duì)象的屬性可能是工作表的名字,某個(gè)單元格的字體裂允,字號(hào)损离,顏色
- 對(duì)象的方法則可以是打開工作表、復(fù)制某個(gè)單元格绝编、激活了一個(gè)新的對(duì)象
?小總結(jié)?
對(duì)象就是你控制和操作的東西僻澎,可以是工作簿,工作表十饥,單元格等等窟勃。對(duì)象有屬性也有方法,要區(qū)分開哦逗堵。
四 小例子
其實(shí)除了對(duì)象還有很多很多的基礎(chǔ)知識(shí)秉氧,是學(xué)任何自然語言或機(jī)器語言都避不開的,但是為了讓看的人不被無數(shù)的語法淹死蜒秤,也更符合我讓你們盡快上手寫出點(diǎn)東西汁咏,甚至不問原因只求結(jié)果的目的,我們小例子需要啥作媚,那么上面就只說什么語法梆暖。
今天我們的例子很簡單,我們?nèi)慷贾粚?duì)工作簿這個(gè)對(duì)象進(jìn)行操作掂骏,我們需要新建三個(gè)工作簿轰驳,保存這三個(gè)工作簿在桌面上,保存的時(shí)候分別命名為:上海弟灼,北京级解,深圳。
9行代碼就可以達(dá)到這個(gè)目的啦田绑,而且大家可以看出來其中其實(shí)3行基本一樣的代碼重復(fù)了三次勤哗。我們歸納一下對(duì)工作簿的動(dòng)作其實(shí)就以下幾種:
新建工作簿
Workbooks.Add
打開工作簿
Workbooks.Open "路徑"
例如:Workbooks.open "F:\KeepLearn.xlsm“
激活工作簿
Workbooks("工作簿名").Activate
例如:Workbooks("上海").Activate
同一個(gè)時(shí)間,活動(dòng)的工作簿只能有一個(gè)掩驱,如果你需要激活另外一個(gè)工作簿芒划,那么原先的工作簿就自動(dòng)處于非活動(dòng)的狀態(tài)了冬竟。有些EXCEL的操作也會(huì)自動(dòng)切換活動(dòng)工作簿,例如上面代碼中的新建工作簿民逼,新建出來的工作簿自動(dòng)成為當(dāng)下的活動(dòng)工作簿泵殴。
這點(diǎn)新手碼代碼時(shí)候一定要特別注意,因?yàn)槿绻阒粚懥薘ange("A1")拼苍,那么程序會(huì)自動(dòng)認(rèn)為是活動(dòng)單元表的A1單元格笑诅。這種情況下,哪個(gè)工作表是活動(dòng)的就很重要了疮鲫。
保存工作簿
Workbooks("工作簿名").Save
如果需要保存為新的文件吆你,或者是第一次保存一個(gè)新建的工作簿,用的是saveas
Workbooks("工作簿名").Saveas "路徑及文件名“
關(guān)閉工作簿
關(guān)閉所有打開的工作簿:
Workbooks.Close
關(guān)閉指定的工作簿并保存:
Workbooks("工作簿名").Close True
關(guān)閉指定的工作簿并不保存:
Workbooks("工作簿名").Close False
? 小提示 ?
VBA可以對(duì)工作簿這個(gè)對(duì)象進(jìn)行新建俊犯、打開妇多、保存、關(guān)閉等各種動(dòng)作燕侠。
五 總結(jié)
這真是一篇不倫不類的教材或者分享砌梆,如果你還能看到這里,非常感謝贬循。
我自己邊寫邊感覺這個(gè)也該說說咸包,那個(gè)也該說說,但又擔(dān)心一股腦把概念都丟出來杖虾,所有人都飛快喪失興趣了烂瘫。慢慢寫,慢慢平衡吧奇适。有意見歡迎提出來坟比。