Excel VBA @數量計算表

數量計算表中常在A欄打入計算式,B欄產生結果:

圖一、感謝鑒恩學長提供使用範例。

1.  A欄打計算式,B欄再打一次計算式前面補個"="。

2.  A欄打計算式,設定定義名稱指定到A欄,於參照欄位中使用內建函數Evaluate產生值。
     B欄填寫"=AA" 即可產生數值。

圖二、AA定義名稱中的參照為內建函數Evaluate

3.  將第2點的方式再更改成較為精簡的自訂函數。

進入開發人員中→檢視程式碼→新增模組→打入以下程式碼。

Public Function Eval(ByVal s As String)

    s = Replace(s, "{", "(")
    s = Replace(s, "[", "(")
    s = Replace(s, "]", ")")
    s = Replace(s, "}", ")")

    Eval = Application.Evaluate(s)

End Function

P.S:因為在使用Evaluate內建函數的時候,他無法偵測小括號"("")" 以外的符號,Ex:{[]},故將程式碼多做一次代換的工作,日後就可以在計算式中比較好辨識優先順序。

日後使用時,一樣在A欄打計算式,B欄打入"=Eval(指定到A欄的儲存格)"即可產生數值囉~

圖三、自訂函數
圖四、操作範例(A1為計算式,C1為值)

有關更進一步的討論連結在此 Excel VBA @數量計算表-2

留言

Popular Posts

Excel VBA @ 監造日報表、查驗表 -2

ExcelVBA@施工照片整理的應用範例

Excel VBA@ 監造日報表、查驗表