一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

寫給VBA初學(xué)者的隨筆: 相信, 實(shí)踐, 理解(三)

 淡泊1212 2022-01-20

接上文……▼

寫給VBA初學(xué)者的隨筆: 相信, 實(shí)踐, 理解(一)

寫給VBA初學(xué)者的隨筆: 相信, 實(shí)踐, 理解(二)

新手學(xué)習(xí)的幾點(diǎn)建議

1:調(diào)試

經(jīng)??吹叫率謱W(xué)習(xí)了很長(zhǎng)時(shí)間的VBA之后仍然不會(huì)使用調(diào)試功能,一遇到問題馬上就請(qǐng)教他人,這樣不利于自身的成長(zhǎng)。調(diào)試非常重要,是學(xué)習(xí)代碼本身
不可或卻的一部分。是診斷,梳理代碼邏輯的過程,可以避免邏輯錯(cuò)誤的重復(fù)性發(fā)生。善用調(diào)試新手很多的問題都可以得到解決,即可擺脫對(duì)他人的依賴性,自身又得到長(zhǎng)足的進(jìn)步,一舉兩得。

三個(gè)窗口,三個(gè)功能鍵:

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

途中診斷:

斷點(diǎn),stop等等。

2:分拆

(1)語句分拆

長(zhǎng)而難懂的句子分拆成基本單元,利用調(diào)試功能一個(gè)個(gè)解決,很容易就理解了它的含義。

如: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選中的哪個(gè)單元格,那么自然就不難理解了。這個(gè)小范例同時(shí)揭示了學(xué)習(xí)程序過程中一個(gè)非常重要的方面:動(dòng)手嘗試。

(2)子程序分拆

把一個(gè)冗長(zhǎng)的程序按照功能拆分成一個(gè)個(gè)相對(duì)獨(dú)立的子程序來調(diào)用,使得程序具有一定程度的組織性,結(jié)構(gòu)性,規(guī)整性大大提高了代碼的可維護(hù)性,擴(kuò)展性,重用性。這是貫穿程序語言發(fā)展的一條主線,因?yàn)樗苯又赶蛄顺绦蜷_發(fā)的終極目的之一:開發(fā)效率。

3:耐心

學(xué)習(xí)目的明確≠急于求成。無論學(xué)習(xí)目的如何直接和明確,學(xué)習(xí)的過程仍然不是一蹴而就的,'捷徑'只能是建立在扎實(shí)的階梯式基礎(chǔ)上。有些新手基本代碼還沒寫利落就開始用界面寫'系統(tǒng)',甚至還沒學(xué)會(huì)調(diào)試,結(jié)果是步履維艱,一步一問,三步一錯(cuò),無以為繼。還有的朋友學(xué)習(xí)VBA是為了研究彩票,還沒學(xué)習(xí)一星期就開始寫各種計(jì)算方法,自然處處遇'難',大挫學(xué)習(xí)興趣,隨之放棄。抱著明確的目的學(xué)習(xí)是好事,不管目的是否'明智'(這是另外一個(gè)話題),但明確的目的不等于'急功近利'。學(xué)習(xí)的進(jìn)程總是遵循漸進(jìn)式的規(guī)律,跳躍式的一夜暴富只能是空中樓閣,所以耐心在學(xué)習(xí)過程中就顯得尤為重要。

單獨(dú)說說效率和速度的問題。程序的效率大致包含兩層含義

(1):執(zhí)行效率;

(2)開發(fā)效率。

執(zhí)行效率又可分為時(shí)間效率和空間效率,空間效率不在本貼討論范圍內(nèi),所以執(zhí)行效率簡(jiǎn)化為速度來討論。之所以單獨(dú)拿出來說這個(gè)問題是因?yàn)檎搲芏嗵釉?速度'追逐上所表現(xiàn)出的'熱忱'比較極端,走的路比較偏執(zhí),希望初學(xué)者能夠以一個(gè)相對(duì)平和的心態(tài)來看待效率。

執(zhí)行效率與開發(fā)效率,從字眼上分析就知道,程序的最優(yōu)目標(biāo)是兩者并重。遺憾的是兼顧并非常態(tài),凸出一者的同時(shí)往往傷害到另一者。當(dāng)兩者出現(xiàn)矛盾時(shí),職業(yè)代碼工人較為普遍接受的原則是:'只有在必須考慮速度的時(shí)候才優(yōu)化執(zhí)行效率,否則以開發(fā)效率為重'。

換句話說,只有在不得不考慮優(yōu)化速度的時(shí)候執(zhí)行效率的目標(biāo)高于開發(fā)效率因?yàn)橐WC功能性,有效性。否則只考慮開發(fā)效率不考慮執(zhí)行效率。職業(yè)程序員和職業(yè)'玩家'在這個(gè)問題的認(rèn)識(shí)上經(jīng)常會(huì)產(chǎn)生分歧。

注重效率的程序員

設(shè)身處地的想一下,職業(yè)程序員在意的是什么?他們?cè)谝獾氖强焖?順利的完成工作,在意的是軟件的穩(wěn)定性,有效性盡量避免老板和客戶找他們的麻煩,最終目的就是掙錢,吃飯,養(yǎng)家?;ㄙM(fèi)幾個(gè)小時(shí)來提速幾個(gè)程序模塊,工資沒多一分錢,延誤了進(jìn)度,工期老板肯定不干?;谶@樣的原因,他們順理成章的注重與可維護(hù)性,穩(wěn)定性,擴(kuò)展性,重用性相關(guān)的開發(fā)效率。

追逐'手筋'的'玩家'~

相比較而言,職業(yè)'玩家'寫代碼并非為了工作,沒有項(xiàng)目壓力,無需考慮開發(fā)時(shí)間,開發(fā)成本,追逐的是華麗的'手筋',以及速度飆升所帶來的愉悅。其次,速度本身的屬性決定了它是一把極其規(guī)范,可量化的標(biāo)尺?;谒俣葹闃?biāo)準(zhǔn)的代碼具有極強(qiáng)的博弈性和競(jìng)技性,不僅可以獨(dú)樂還可以眾樂。

'有意義'和'無意義'

前邊我們就曾提過'有意義的快'和'無意義的快','有意義的快'可以包括兩種情況分別稱作'根本性速度提升'和'規(guī)模型速度提升'。

插播小故事:'這事兒不賴我'
某日一油漆工找到一份新工作:刷馬路中間的白線。
于是油漆工把一個(gè)油漆桶放到了起點(diǎn)上開始工作了。
第一天,油漆工刷了300米,老板大喜,夸獎(jiǎng)油漆工:'工作很出色!'
第二天,油漆工刷了150米,老板不露聲色,鼓勵(lì)油漆工:'工作干的不錯(cuò)!'
第三天,油漆工刷了30米,老板大怒,吼道:'今天只刷了第一天的1/10,到底怎么回事?'
油漆工回答:'這事兒不賴我呀!我每天距離油漆桶越來越遠(yuǎn)了啦!'

這個(gè)小故事形象的描繪了這樣一個(gè)事實(shí):改變工作方式可以帶來根本性的效率提高。在遇到類似于上述情況時(shí),初學(xué)者可考慮優(yōu)化代碼提升速度。

在VBA中當(dāng)遇到速度慢的不可忍受的情況時(shí),粗略的說可從以下幾點(diǎn)入手:

(1)合理化數(shù)據(jù)源的結(jié)構(gòu);

(2)用數(shù)組一次讀寫單元格內(nèi)容,避免頻繁操作單元格對(duì)象;

(3)查詢搜索改用Collection或字典。

所謂'規(guī)模型速度提升'是指對(duì)于應(yīng)用頻次高的問題,可以考慮一次優(yōu)化速度,應(yīng)用無數(shù)次,追求規(guī)模效應(yīng)降低開發(fā)效率損失。至于'非根本性速度提升'
的例子可以在論壇看到很多,諸如循環(huán)是用指數(shù)索引快?還是ForEach索引快?等等,這里就不一一列舉了。

用一句話來總結(jié):'程序的本質(zhì)是用機(jī)器來解放勞動(dòng)力,而不是用勞動(dòng)力解放機(jī)器!'

本來想寫很多內(nèi)容,一來由于沒什么初學(xué)者看所以無收獲可言;二來如果深入的話恐會(huì)戕害一些壇友的感情;三來目前此帖已有萬余字,再多就不像帖子了。再深入展開下去實(shí)屬下下策,故此樓略顯單薄,但基本意思都點(diǎn)到了。剩下關(guān)于算法和數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí)和態(tài)度在本樓沒有提及。

到該結(jié)束的時(shí)候了,想必大家能理解本貼的態(tài)度:不褒不貶。你用,或者不用它,你喜歡,或者不喜歡它,它就在那里,不遠(yuǎn)不近,無所謂“強(qiáng)'無所謂”弱'。

一致性,對(duì)稱性是匹配的原則。對(duì)稱匹配,你收獲你想要的,Excel,VBA發(fā)揮應(yīng)有的效力;反之,錯(cuò)位匹配引發(fā)牽強(qiáng)附會(huì),捉襟見肘。既然談過了VBA的定位,自然不可避免的要談一下對(duì)其宿主Excel的認(rèn)識(shí)。話題就從這里開始吧......

靈活是把雙刃劍

相比VBA而言,Excel的邊緣性更強(qiáng)。相信大家都積累了多年的使用經(jīng)驗(yàn),是Excel的行家里手,提及某某功能如何實(shí)現(xiàn)均可娓娓道來。如果問一個(gè)這樣的問題:'Excel到底是什么?'一言以畢之,'電子表格工具'。這種定義只是給Excel起了個(gè)別名(alias),不是一種理解,認(rèn)識(shí)和定位。曾經(jīng)問過自己這個(gè)問題,我發(fā)現(xiàn)自己答不上來或者說自己的能力不足以回答這個(gè)問題。

邊緣性強(qiáng)主要表現(xiàn)在使用范圍廣泛,尤其它還是一款不斷升級(jí)的產(chǎn)品并且有諸多第三方插件對(duì)其進(jìn)行功能擴(kuò)展,這時(shí)候你會(huì)發(fā)現(xiàn)無論怎么回答這個(gè)問題都是錯(cuò)的,難免給初學(xué)者造成'Excel無所不能'的錯(cuò)覺。但如果不能予以概念上的定位,就無法回答'適度'使用的問題,結(jié)果就是一切和表格有關(guān)的工作都用Excel來做。

Excel簡(jiǎn)單易用,功能強(qiáng)大,所見即所得(這可是個(gè)不得了的特點(diǎn)),這些都是耳熟能詳?shù)奶攸c(diǎn)。個(gè)人認(rèn)為Excel最大的特點(diǎn)來自于靈活:

(1)自由設(shè)計(jì)用戶自己的藍(lán)圖,天馬行空,個(gè)性十足;

(2)Excel分享了數(shù)據(jù)庫的一些特點(diǎn),具有一定程度的記錄和數(shù)據(jù)存儲(chǔ)的功能。雖然可以說Excel缺乏關(guān)系結(jié)構(gòu),但由于靈活的特點(diǎn),可以用工作表打造出關(guān)系結(jié)構(gòu);

(3)通過各種計(jì)算和圖表功能,提供多視角數(shù)據(jù)體驗(yàn);

(4)騰挪空間廣闊,運(yùn)用水平差異大。

然而靈活性并非是無成本的,靈活的同時(shí)就意味著規(guī)范性差,同樣功能的表格10個(gè)人設(shè)計(jì)出12樣兒來,格式,表頭,結(jié)構(gòu),實(shí)現(xiàn)方式等等花樣百出。

規(guī)范性差導(dǎo)致用戶交流困難,隨著邏輯業(yè)務(wù)設(shè)計(jì)復(fù)雜程度不斷提高,有效性控制繁雜,錯(cuò)誤幾率增大,急劇加重了設(shè)計(jì)者的負(fù)擔(dān)。邏輯業(yè)務(wù)關(guān)系越復(fù)雜設(shè)計(jì)成本的增長(zhǎng)幅度就越大(呈非線性增長(zhǎng)態(tài)勢(shì))。前些日子看到一位壇友希望把一套表格封裝,表格集成了一套用公式表達(dá)的復(fù)雜邏輯業(yè)務(wù)關(guān)系。其實(shí)這套關(guān)系本身就是一道加密壁壘,把其中的邏輯梳理清楚比破解還費(fèi)勁。

個(gè)人的一點(diǎn)看法:既然很難在概念上抽象化Excel的定位,只好用一條條描述性的特征來概括Excel,但這種列舉是無法窮盡的。

從正面說:

(1)Excel'適用'于:邏輯業(yè)務(wù)關(guān)系相對(duì)簡(jiǎn)單,數(shù)據(jù)規(guī)模不大,一鍋端式的集成應(yīng)用;(可惜無法量化定義'簡(jiǎn)單','規(guī)模')

(2)對(duì)于業(yè)務(wù)邏輯復(fù)雜,規(guī)模較大的數(shù)據(jù),Excel'適合'充當(dāng)數(shù)據(jù)庫和用戶之間的緩沖層(buffer)。致力于數(shù)據(jù)的展示,整理,綜合,'分析'等體現(xiàn)靈活性的職責(zé)。

從反面說:(表象)

(1)避免用Excel設(shè)計(jì)大規(guī)模業(yè)務(wù)關(guān)系復(fù)雜的'系統(tǒng)';

(2)避免大量數(shù)據(jù)存儲(chǔ)造成Excel文件尺寸過大;(動(dòng)輒幾十上百M(fèi)的Excel文件經(jīng)常能夠看到)

(3)避免大量公式集成,重算可以導(dǎo)致文件打開速度過慢,運(yùn)行速度過緩;

(4)避免搭建Excel文件系統(tǒng);(幾十上百Excel文件組成的文件集也是屢見不鮮)

(5)......

上述情況可以適當(dāng)考慮使用數(shù)據(jù)庫的功能,畢竟他們之間是有本質(zhì)區(qū)別的。這里只是以我的觀點(diǎn)來看待Excel,“不適合'不代表Excel不能做到,最終的評(píng)判要交給用戶,誰用誰有話語權(quán)而不是設(shè)計(jì)者和所謂規(guī)范的探索者。在能意識(shí)到'隱患'的條件下,如果您覺得好用,完全可以避免庸人自擾式的思考,堅(jiān)持走自己的路。

既然Excel的特點(diǎn)是靈活,我們就以一個(gè)靈活的態(tài)度來認(rèn)識(shí)和對(duì)待它好了。

至此關(guān)于Excel和VBA的話題就告一段落了,最后再補(bǔ)充一句:

對(duì)于業(yè)務(wù)部門職員來說,Excel,VBA解決工作中的問題真的是夠用了,也是很好的選擇。如果不夠用說明您的工作應(yīng)該是由IT部門來完成的工作。業(yè)務(wù)部門的員工扛著VBA去干IT部門的工作,無論是工具和還是工作內(nèi)容都錯(cuò)位的離譜。

最后收錄一些經(jīng)典語錄。既然是收集,就是一個(gè)開放和相對(duì)漫長(zhǎng)的過程,先把帖子的架子搭完,對(duì)觀眾有個(gè)交代,

【存在即合理】
<評(píng)>:理解'合理'的著眼點(diǎn)才能正確的認(rèn)識(shí),對(duì)待,運(yùn)用好這種存在。一言以畢之不是試圖掩蓋存在本質(zhì)的借口就是盲信。

【細(xì)節(jié)決定成敗】
<評(píng)>:方向決定'成'是否有意義。

【不管什么,只要學(xué)好了都牛】
<評(píng)>:憤~青的態(tài)度抹殺客觀存在的差異性。
只要聽到'不管....只要....就....'的句子就是錯(cuò)的?

...............

【吾生也有涯,而知也無涯】《莊子》
ID:灰袍法師
<補(bǔ)>:以有涯隨無涯,殆己。

【在EH人眼里,Excel就是一部游戲機(jī)】
ID:kangatang
<補(bǔ)>:而且還是一部聯(lián)網(wǎng)的游戲機(jī)。
...............

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品涩涩成人一区二区三区| 办公室丝袜高跟秘书国产| 国产精品久久精品国产| 一区二区三区亚洲天堂| 欧美在线观看视频三区| 人妻少妇av中文字幕乱码高清| 老富婆找帅哥按摩抠逼视频| 国产精品欧美激情在线观看| 亚洲婷婷开心色四房播播| 久久99一本色道亚洲精品| 亚洲视频在线观看免费中文字幕| 日韩欧美精品一区二区三区| 久久精品福利在线观看| 国产精品成人一区二区三区夜夜夜 | 中文字幕日韩欧美理伦片| 欧美日韩最近中国黄片| 久久精品亚洲情色欧美| 九九热国产这里只有精品| 91超频在线视频中文字幕| 久久青青草原中文字幕| 亚洲专区中文字幕视频| 国产欧美日韩精品自拍| 日韩特级黄片免费在线观看| 91爽人人爽人人插人人爽| 国产精品偷拍一区二区| 国产精品免费精品一区二区| 精品视频一区二区三区不卡| 成人日韩在线播放视频| 国产中文字幕一二三区| 国产精品自拍杆香蕉视频| 中国美女草逼一级黄片视频| 日本婷婷色大香蕉视频在线观看| 欧美日韩中国性生活视频| 欧美日韩亚洲国产av| 国产精品欧美日韩中文字幕| 中文字幕不卡欧美在线| 亚洲精品一区三区三区| 能在线看的视频你懂的| 久热青青草视频在线观看| 国产亚洲不卡一区二区| 国产精品一区二区三区欧美|