淺論 Excel VBA 的 MVC 框架

撰寫即時性的看盤資料分析,最簡單與方便的莫過於利用 Excel 了。工作表 (Worksheet)內的儲存格 (Cell)既可以當成如 DDE or RTD 的資料源,又能做計算邏輯與資料的呈現。而若牽涉到較複雜,如多個儲存格甚或多個工作表、多個工作簿 (Workbook)之間的資料處理,則可利用 Excel 內建的 VBE (Visual Basic Editor)程式開發編輯器來撰寫一般開發人員所認知的「巨集 (Macro)」程式。

VBE 編輯器會為每一個 Excel 檔案配置一個 VBA 專案 (VBAProject),每一個 VBAProject 可以有四種不同類型的資料夾 (Folder)-「Excel 物件」、「模組 (Module)」、「表單 (Form)」、「物件類別模組 (Class Module)」。其中「Excel 物件」資料夾是預設其內並預設了四個「This Workbook」、「工作表1」、「工作表2」、「工作表3」物件。
Excel VBA Project 組成

這裡帶出一個問題:VBA 程式碼該寫在這四種類型的哪一個資料夾 (或應該稱為哪一種類型的模組)?

或直接把其中最常見的問題更白話:不同工作表之間的資料篩選、處理與搬移等,VBA 程式碼的控制 (Control)與運算邏輯部分,該寫在「Excel 物件」還是「模組 (Module)」?

為了一次性解決 Excel VBA 程式碼結構議題,個人花了兩天的時間思考,先從這四種類型的物件 (可以把這四種資料夾想成四大物件類型)運用物件導向分析思維 (object-oriented analysis thinking)的「責任分派樣式 (responsibility assign pattern)」,先釐清這四大類物件的主要責任。

我這裡先利用 UML 類別圖 (class diagram),來表達出「VBAProject」與這四種類型的物件結構關係。
Excel VBA Project 的結構關係

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal