Tuesday, June 23, 2009

VBA for MEP Calculations

  • Application ေတြထဲ မွာ Programming အမ်ိဳးမ်ိဳး သံုးလို႔ ရပါတယ္။ ဒီအထဲ မွာ သံုးတတ္ရင္ အခ်ိန္ကုန္ သက္သာေစတဲ့ VBA (Visual Basics for Application) ကိုသံုးၿပီး Engineering Formula Functions ေတြ ေရးတာ ကို မိတ္ဆက္ေပး ဘို႔ ရည္ရြယ္ထားပါတယ္။
  • အဓိက သံုးမဲ့ ေနရာ က ေတာ့ spread sheet (Microsoft Excel) အတြက္ ပါ။ တကယ္ေတာ့ VBA က MS Offices ေတြ၊ Web Script ေတြ အတြက္ သာ မက AutoCad ® မွာလည္း အသံုးျပဳလို႔ ေကာင္းတဲ့ programming တစ္ခုပါ။ AutoCad ® ကိုသံုးတဲ့ သူေတြ အတြက္ AutoLisp, vBA, Diesel, Script စတဲ့ programming အခ်ိဳ႕ကို နားလည္ရင္ ထပ္တလဲလဲ လုပ္ရတဲ့ process ေတြ ကို အခ်ိန္ကုန္ သက္သာစြာ နဲ႔ လုပ္ေဆာင္ ႏိုင္ပါတယ္။ ရႈတ္ရႈတ္ေထြးေထြး တြက္ခ်က္ဘို႔ လိုအပ္တာေတြ၊ Trial and error Loop နဲ႔တြက္ရတာေတြ အတြက္လည္း တစ္ႀကိမ္ စနစ္တက် ေခါင္းရႈတ္ခံ လိုက္ရင္ ေနာက္တစ္ခါ သံုးဘို႔ အဆင္သင့္ ျဖစ္ေစပါမယ္။



  1. Basic of Programming
    • Programming Languages အလိုက္ Detail အမ်ိဳးမ်ိဳး ျဖစ္ႏိုင္ေပမဲ့ basic instructions အခ်ိဳ႕ ကေတာ့ Languages တိုင္းလိုလို မွာပါဝင္ေနတာ ေတြ႕ရပါမယ္။
      • input: Get data from the keyboard, a file, or some other device.
      • output: Display data on the screen or send data to a file or other device.
      • Math / Operation : Perform basic mathematical operations like addition and multiplication.
      • conditional execution: Check for certain conditions and execute the appropriate sequence of statements.
      • repetition: Perform some action repeatedly, usually with some variation.
    • ဒါေတြရဲ့ အေျခခံ ေတြ ကို Algorithm (or) Pseudocode and Program Flow Chart ေတြနဲ႔ ျပလို႔ ရပါတယ္။ Modular programming လို႔ေခၚတဲ့ Program အေသးေလး ေတြ အပိုင္းလိုက္ အကန္႔လိုက္ အစိတ္စိတ္ သီးျခားခြဲ ေရးၿပီး မွ ေပါင္းစပ္ သံုးတဲ့ အခါ ေရးရတာေရာ၊ debug လုပ္ရတာေရာ လြယ္ကူလာပါတယ္။
    • Program ေရးတဲ့ အခါ စနစ္ တက် Planning လုပ္ထားခဲ့ဘို႔ လိုအပ္ပါတယ္။ မဟုတ္ရင္ အမွားရွာရ ျပင္ရ စတဲ့ Debugging လုပ္ရတာ က ေရးရတာထက္ အဆေပါင္း မ်ားစြာ ပိုခက္ေစရံု သာမက Crush ျဖစ္တဲ့ ျပႆနာ ေတြကိုပါ ထပ္ရွင္း ေနရပါလိမ့္ အံုးမယ္။
    • Programming Flowchart နဲ႔ ပတ္သက္ၿပီး http://www.nos.org/htm/basic2.htm မွာ သြား ေရာက္ ေလ့လာ ႏိုင္ပါတယ္။ အဓိက သိသင့္တာ ကေတာ့
      • Start / End : အစ နဲ႔ အဆံုး (Programming တိုင္းမွာ အစ (Start) နဲ႔ အဆံုး (End) ပါဝင္ရပါမယ္။) သူ႕ရဲ့ ပံုက ေထာင့္ကို လံုးထားတဲ့ စတုဂံ ပံုပါ။
      • Process : Computational steps or processing function of a program၊ ပံုက ရိုးရိုး စတုဂံပံုပါ။
      • Decision Making and Branching၊ ႐ြမ္းဗတ္ ပံု။


    ...Back to Top ....
  2. VBA for Excel
    Excel အတြက္ VBA Application ကိုေလ့လာတဲ့ အခါ သိသင့္တာေတြ ကေတာ့၊
    • VB for Application
    • VB for Excel Application
    • Files (personal.xls or add-in ".xla", Newer version ".xlsx")
    • Excel VBA Object Model: Excel, Word, AutoCad ® သာမက VBA သံုးႏိုင္တဲ့ Applications ေတြ မွာ Object Model ေတြရွိပါတယ္။ ဒါမွ VBA ကေန လုပ္ေဆာင္ရမဲ့၊ လုပ္ေဆာင္ႏိုင္တဲ့ နည္းလမ္းေတြ ကို ရွာေဖြ ႏိုင္ဘို႔ပါ။
    • Macro Security
    • Function and Sub: Sub ဆိုတာ ကေတာ့ macro အေနနဲ႔ တိုက္ရိုက္ run လို႔ရတဲ့ processes ေတြပါ။ ပါဝင္တဲ့ နည္းလမ္း အခ်ိဳ႕ ကို modify လုပ္ဘို႔ လိုတဲ့ အခါ macro record လုပ္ၿပီး မီွျငမ္းေလ့လာႏိုင္ပါတယ္။ Form ေတြပါ ဒီဇိုင္းလုပ္ၿပီး Graphical User Interface နဲ႔ သံုးစြဲႏိုင္ပါတယ္။ အခုတင္ျပမွာ ကေတာ့ ဒီ Sub အေၾကာင္း မဟုတ္ပါဘူး။ Excel Spread Sheet ထဲမွာ Function အေနနဲ႔ တိုက္ရိုက္ Insert လုပ္ သံုးႏိုင္မဲ့ Function ေတြအေၾကာင္းပါ။

    ...Back to Top ....
  3. Developing Programming Flowcharts for HVAC Air-Side Circular Duct Sizing Calculations (SI Units)
    • Cold Air Standard အတြက္ သံုးရမဲ့ Duct အရြယ္အစား ေရြးခ်ယ္တဲ့ နည္းပါ။ ဒီနည္း နဲ႔ Pressure Loss ကို တြက္ထုတ္ ရင္ ရမဲ့ Duct Pressure Loss အေျဖက ± 5% အတြင္းမွာ ရွိပါတယ္။ သူ႕ကို သံုးႏိုင္တဲ့ Conditions ေတြကေတာ့။
      • Temperature: 5 to 35 °C
      • Elevation: 0 to 500m
      • Duct Pressure: -5 to 5 kPa relative to ambient pressure
    • ဒီ အေျခအေန ေတြ က ပံုမွန္ HVAC အတြက္ လံုေလာက္ပါတယ္။
    • အမ်ားအားျဖင့္ Constraints ႏွစ္ခုရွိပါတယ္။ Velocity နဲ႔ Friction Loss ပါ။ ဒါေၾကာင့္ Duct Size လုပ္တဲ့ အခါ Velocity ကိုပဲ သံုးရင္ မွားတတ္ပါတယ္။
    • Velocity Limits ေတြ နဲ႔ပတ္သက္ၿပီး Basic Duct Sizing Consideration ေတြကုိ M&E Basics: Pipe & Duct Sizing မွာေလ့လာပါ။ (မွတ္ခ်က္၊ ၊ Ducting နဲ႔ Piping ကို သီးသန္႔ျပန္ခြဲ ဘို႔ စီစဥ္ေနပါတယ္။)
    • ပထမဆံုး Circular Duct Size ကို တြက္ဘို႔ Function ကိုေရးရပါမယ္။
    • အသံုးျပဳမဲ့ Calculation Formulae ေတြကို ေတာ့ ASHRAE Handbook: Fundamental ထဲကေန မွီျငမ္းထားပါတယ္။



    • တြက္နည္း အဆင့္ဆင့္ ကေတာ့၊
      • သတ္မွတ္ထားတဲ့ Velocity အတြင္းဝင္တဲ့ Duct Size ကိုတြက္မယ္။
      • ဒီ Duct Size နဲ႔ တြက္ရင္ ရမဲ့ Pressure Loss ကိုတြက္ၿပီး သတ္မွတ္ထားတဲ့ Limit အတြင္းရွိမရွိ ၾကည့္မယ္။ ဝင္ေနတယ္ ဆိုရင္ အေျဖရပါၿပီ။
      • Limit အတြင္း မဟုတ္ေသး ရင္ေတာ့ သတ္မွတ္ထားတဲ့ Pressure Loss Limit အတြင္း မဝင္မခ်င္း Duct Size ကိုျပန္ေရြး၊ ျပန္တြက္ လုပ္ရပါမယ္။

    • ဒီ Function ကိုေရးတဲ့ အခါ တြက္ရ ပုိၿပီးလြယ္ ကူေအာင္ အကူ Functions ခြဲႏွစ္ခု ပါ ထည့္ေရးထားပါတယ္။ ဒီ Functions သံုးခု ေပါင္းမွ အလုပ္ လုပ္ပါလိမ့္မယ္။
      1. DuctSize_Cir_mm : Circular Duct Size ကို တြက္ထုတ္ဘို႔ပါ။
      2. DuctFrictionLoss_Pa: Circular Duct Frictioin Loss ကို တြက္ထုတ္ဘို႔ပါ။
      3. f_Colebrook: Colebrook's Friction Factor ကို တြက္ထုတ္ဘို႔ပါ။

    • Flowcharts ေတြ ကို ေရးမယ္ဆိုရင္ ဒီလိုေတြ႕ရပါမယ္။
      1. DuctSize_Cir_mm

      2. DuctFrictionLoss_Pa

      3. f_Colebrook

    • Circular Duct မဟုတ္တဲ့ အျခား Duct ေတြ ကို သံုးတဲ့ အခါ အသင့္ေတာ္ဆံုး ကေတာ့ Equivalent Circular Duct ကိုရွာၿပီး တြက္တဲ့ နည္းပါ။
    • HVAC Air-Side မွာသံုးေလ့ ရွိတဲ့ Air Duct အမ်ိဳးအစား သံုးခု နဲ႔ သက္ဆိုင္တဲ့ Conversion Formula ေတြ ကို ေအာက္မွာ ေဖာ္ျပထားပါတယ္။
    • ဒီ Conversion Formula ေတြ ကို အသံုးခ်ထားတဲ့ VBA Code ေတြကိုပါ ထည့္သြင္း ေဖာ္ျပေပးမွာ ျဖစ္ပါတယ္။
    • ဒီ တြက္နည္း ေတြ ကို Numerical Programming နဲ႔တြက္ဘို႔ VBA Code ကို ေရးရပါတယ္။ Excel ထဲက Visual Basic Editor ေအာက္မွာပါ။ သီးသန္႔ ".xla" အျဖစ္နဲ႔ ထားၿပီး Excel အစမွာ တက္ဘို႔ ထားထားတဲ့ XLStart ဆိုတဲ့ Folder ကိုရွာၿပီး ထည့္ခ်င္ထည့္၊ “personal.xls” ဆိုတဲ့ File ထဲမွာပဲ ျဖစ္ျဖစ္ ထားလို႔ရပါတယ္။
    • VBA က Macro Security Level ေပၚမူတည္ ၿပီး အလုပ္လုပ္ခြင့္ ေပးရပါတယ္။ Powerful Operation ေတြမို႔ Macro Security အေၾကာင္းကို ေသေသခ်ာခ်ာ ေလ့လာ သိရွိထားဘို႔ လိုအပ္ပါတယ္။
    • "personal.xls" ဆိုတာ မရွိေသးရင္ေတာ့ ပထမ Record New Macro လုပ္၊ စာတစ္လံုး ႏွစ္လံုးရိုက္၊ ဟုိႏွိပ္ဒီႏွိပ္ လုပ္ၿပီး Stop Macro ကိုႏွိပ္၊ ၿပီးလို႔ Visual Basic Editor ကို ဖြင့္လိုက္ရင္ "personal.xls" တက္လာတာ ေတြ႕ရပါလိမ့္မယ္။


    • ေအာက္ဆံုး ပိုင္း မွာ Excel 2003 နဲ႔ Excel 2007 က Screenshots အခ်ိဳ႕ကို ထည့္သြင္း ေပးထားပါတယ္။

    ...Back to Top ....
  4. VBA Codes for Air Duct (SI Units)
    • Air Duct Sizing တြက္ခ်က္ရမွာ သံုးနိုင္ဘို႔ အတြက္ VBA Functions ေတြ ကို ေရးထား ေပးပါတယ္။ ေရးထားတဲ့ Functions ေတြ ကေတာ့။
      1. DuctSize_Cir_mm(Air_cmh, Optional dP_Pa = 1, Optional V_mps = 8, Optional e_mm = 0.09)
        Circular Duct Size ကို တြက္ထုတ္ဘို႔ပါ။

      2. DuctFrictionLoss_Pa(Air_cmh, DuctDia_mm, Optional e_mm = 0.09)
        Circular Duct Frictioin Loss ကို တြက္ထုတ္ဘို႔ပါ။

      3. f_Colebrook(e_by_D, Re)
        Colebrook's Friction Factor ကို တြက္ထုတ္ဘို႔ပါ။

      4. DuctR2C(dH, dW)
        Rectangular Duct ရဲ့ Equivalent Circular Duct Diameter ကို ရွာေပးမဲ့ Function ျဖစ္ပါတယ္။

      5. DuctO2C(dH, dW)
        Oval Duct ရဲ့ Equivalent Circular Duct Diameter ကို ရွာေပးမဲ့ Function ျဖစ္ပါတယ္။

      6. DuctC2R(dD, Optional dH = 0)
        Circular Duct တစ္ခု ရဲ့ Equivalent Rectangular Duct Dimension ကို ရွာေပးမဲ့ Function ျဖစ္ပါတယ္။ dH=0 ထားရင္ Square Duct ကို ရွာေပးပါလိမ့္မယ္။

      7. DuctC2O_Width(dD, Optional dH = 0)
        Circular Duct တစ္ခု ရဲ့ Equivalent Oval Duct Dimension ကို ရွာေပးမဲ့ Function ျဖစ္ပါတယ္။ dH=0 ထားရင္ေတာ့ Square duct ကို round Duct ရံထားတဲ့ အရြယ္အစား ကို ရရွိပါမယ္။ ( ie, a = 2 * b )

      8. Function DuctAirFlow_Cir_cmh(dD_mm, Optional dP_Pa = 1, Optional dV_mps = 9, Optional e_mm = 0.09)
        Circular Duct တစ္ခုရဲ့ Allowable Air Flow (cmh) ကို တြက္ထုတ္ဘို႔ ျဖစ္ပါတယ္။

      9. DuctAirFlow_Rec_cmh(dW_mm, dH_mm, Optional dP_Pa = 1, Optional dV_mps = 9, Optional e_mm = 0.09)
        Rectangular Duct တစ္ခုရဲ့ Allowable Air Flow (cmh) ကို တြက္ထုတ္ဘို႔ ျဖစ္ပါတယ္။

      10. DuctAirFlow_Oval_cmh(dW_mm, dH_mm, Optional dP_Pa = 1, Optional dV_mps = 9, Optional e_mm = 0.09)
        Oval Duct တစ္ခုရဲ့ Allowable Air Flow (cmh) ကို တြက္ထုတ္ဘို႔ ျဖစ္ပါတယ္။

    • Visual Basic Editor ကိုဖြင့္ၿပီးတဲ့ အခါ VBAProject(PERSONAL.XLS) ေအာက္မွာ Module တစ္ခု ကို ထည့္သြင္းၿပီး ကိုယ္ႏွစ္သက္သလို နာမည္ေပး ရပါမယ္။ e.g. AirDuct ၿပီးရင္ Code ေနရာမွာ ေအာက္က VBA Codes ေတြကို Copy & Paste လုပ္ဘို႔ပါ။ (Screenshots: No.2 ကို မွီျငမ္း ၾကည့္ပါ။)


    'General Section Declaration
    Option Base 0 'array base
    Option Compare Text
    Private Const atm As Double = 101.325 ' Atmospheric pressure in kPA
    Public Const pi As Double = 3.14159265358979


    'Function No. 01: to calculate Circular Duct Size
    Function DuctSize_Cir_mm(Air_cmh, Optional dP_Pa = 1, Optional V_mps = 8, Optional e_mm = 0.09)
    'Calculate Circular Duct Size, Default for 1Pa/m, 8 m/s and Medium Surface Roughness 0.09mm
        Dim dV As Double, dD As Double, dA As Double
        Dim dP As Double

        'calc Area which satisfy the velocity limits
        dV = V_mps
        dA = Air_cmh / (3600# * dV)
        dD = (4 * dA / pi) ^ 0.5 * 1000

        'call function for Friction Loss
        dP = DuctFrictionLoss_Pa(Air_cmh, dD, e_mm)

        If dP > dP_Pa Then
            Do
                'Use Power rule estimation for iteration
                dD = dD * (dP / dP_Pa) ^ 0.25
                dP = DuctFrictionLoss_Pa(Air_cmh, dD, e_mm)
                'exit error 1%
                If Abs((dP - dP_Pa) / dP_Pa) < 0.01 Then Exit Do
            Loop
        End If
        DuctSize_Cir_mm = dD
    End Function


    'Function No. 02: to calculate duct friction loss
    Function DuctFrictionLoss_Pa(Air_cmh, DuctDia_mm, Optional e_mm = 0.09)
        'Calculate Friction Loss
        Dim dQ As Double, dD As Double 'flowrate (m3/s), diameter(mm)
        Dim dV As Double, dF As Double 'velocity (m/s), friction factor
        Dim dM As Double, dE As Double 'density (kg/m3), surface roughness
        Dim Re As Double, dA As Double

        'For Cold Air Standard at density=1.2kg/m3
        If Air_cmh * DuctDia_mm > 0 Then
            dQ = Air_cmh / 3600# 'convert air flowrate to m3/s
            dD = DuctDia_mm
            dM = 1.2 'kg/m3 for cold air std
            dA = 0.25 * pi * (dD / 1000#) ^ 2
            dV = dQ / dA 'v=Q/A
            Re = 66.4 * dD * dV 'Ref ASHRAE: or use Re = V * d / nu
            dF = f_Colebrook(e_mm / dD, Re)
            DuctFrictionLoss_Pa = 500 * dF * dM * dV * dV / dD
        Else
            DuctFrictionLoss_Pa = 0
        End If
    End Function


    'Function No. 03: to calculate Colebrook Friction Factor
    Function f_Colebrook(e_by_D, Re) 'e_by_D Relative roughness; Dh: Hydraulic Dia, Re: Reynold number
        'Calculate Colebrook friction Factor

        Dim f As Double, root_f As Double, root_f1 As Double

        'Start with Tsal's estimation
        f = 0.11 * (e_by_D + 68 / Re) ^ 0.25
        If f < 0.018 Then
            f = 0.85 * f + 0.0028
        End If

        root_f = f ^ 0.5
        Do
            root_f1 = -0.5 * Log(10) / Log(e_by_D / 3.7 + 2.51 / (root_f * Re))
            'check if error is less than 0.5%
            If Abs((root_f1 - root_f) / root_f) < 0.005 Then Exit Do
            root_f = 0.5 * (root_f + root_f1) 'Use binary approach iteration
        Loop
        f_Colebrook = root_f ^ 2
    End Function


    'Function No. 04: Equivalent Circular Duct Size of a Rectangular Duct
    Function DuctR2C(dH, dW) As Double
        'Rectangular Duct to Circular Duct
        If dW * dH > 0 Then
            DuctR2C = 1.3 * ((dH * dW) ^ 0.625) / ((dH + dW) ^ 0.25)
        Else
            DuctR2C = 0
        End If
    End Function


    'Function No. 05: Equivalent Circular Duct Size of an Oval Duct
    Function DuctO2C(dH, dW) As Double
        'Oval Duct to Circular Duct
        Dim dA As Double, P As Double
        If dW * dH > 0 Then
            dA = (pi * dH ^ 2 / 4) + dH * (dW - dH)
            P = pi * dH + 2 * (dW - dH)
            DuctO2C = 1.55 * (dA ^ 0.625) / (P ^ 0.25)
        Else
            DuctO2C = 0
        End If
    End Function


    'Function No. 06: Equivalent Rectangular Duct Dimension of a Circular Duct
    Function DuctC2R(dD, Optional dH = 0) As Double
        'Circular Duct to Rectangular Duct
        'if Dimension (dH) is zero, square duct
        'dH could be either dimension: "Width" or "Height"
        Dim dW As Double, dW1 As Double
        Dim dD1 As Double

        If dH > 0 Then
            'Estimate dH
            dW = 0.25 * pi * dD * dD / dH
            Do
                dD1 = 1.3 * ((dH * dW) ^ 0.625) / ((dH + dW) ^ 0.25)
                dW = dW * (dD / dD1) ^ 2
                If Abs((dD1 - dD) / dD) < 0.005 Then Exit Do
            Loop
        Else
            dW = dD * 0.9148
        End If
        DuctC2R = dW
    End Function


    'Function No. 07: Equivalent Oval Duct Dimension of a Circular Duct
    Function DuctC2O_Width(dD, Optional dH = 0) As Double
        'Circular Duct to Rectangular Duct
        'if Dimension (dH) is zero, square duct + round, ie, a = 2 * b
        'dH is dimension b for "Height", dW is dimension a for "Width"
        'As nature, dH < dD
        Dim dW As Double, dW1 As Double
        Dim dD1 As Double
        Dim dA As Double, P As Double

       If dH > 0 Then
            'Estimate dH
            dW = 0.25 * pi * (dD * dD - dH * dH) / dH
            Do
                dA = (pi * dH ^ 2 / 4) + dH * (dW - dH)
                P = pi * dH + 2 * (dW - dH)
                dD1 = 1.55 * (dA ^ 0.625) / (P ^ 0.25)
                dW = dW * (dD / dD1) ^ 2
                If Abs((dD1 - dD) / dD) < 0.005 Then Exit Do
            Loop
        Else
            dW = dD / 1.5234
        End If
        DuctC2O_Width = dW
    End Function


    'Function No. 08: To Calculate Allowable Air Flow from a Circular Duct.
    Function DuctAirFlow_Cir_cmh(dD_mm, Optional dP_Pa = 1, Optional dV_mps = 9, Optional e_mm = 0.09)
        Dim cmh As Double, dP As Double
        Dim dD As Double, dV As Double

        dV = dV_mps
        dD = dD_mm
        cmh = 0.0009 * pi * dD * dD * dV '0.0009 <- 0.25*3600/1000000
        dP = DuctFrictionLoss_Pa(cmh, dD, e_mm)
        If dP > dP_Pa Then
            Do
                dV = dV * (dP_Pa / dP) ^ 0.5
                cmh = 0.0009 * pi * dD * dD * dV
                dP = DuctFrictionLoss_Pa(cmh, dD, e_mm)
                If Abs(dP - dP_Pa) / dP_Pa < 0.01 Then Exit Do
            Loop
        End If
        DuctAirFlow_Cir_cmh = cmh
    End Function


    'Function No. 09: To Calculate Allowable Air Flow from a Rectangular Duct.
    Function DuctAirFlow_Rec_cmh(dW_mm, dH_mm, Optional dP_Pa = 1, Optional dV_mps = 9, Optional e_mm = 0.09)
        Dim dD As Double, dV As Double
        dV = dV_mps
        dD = DuctR2C(dW_mm, dH_mm)
        DuctAirFlow_Rec_cmh = DuctAirFlow_Cir_cmh(dD, dP_Pa, dV_mps, e_mm)
    End Function


    'Function No. 10: To Calculate Allowable Air Flow from an Oval Duct.
    Function DuctAirFlow_Oval_cmh(dW_mm, dH_mm, Optional dP_Pa = 1, Optional dV_mps = 9, Optional e_mm = 0.09)
        Dim dD As Double, dV As Double
        dV = dV_mps
        dD = DuctO2C(dW_mm, dH_mm)
        DuctAirFlow_Oval_cmh = DuctAirFlow_Cir_cmh(dD, dP_Pa, dV_mps, e_mm)
    End Function


    ...Back to Top ....
  5. Screenshots: Adding VBA Codes in Excel
    Excel 2002-2003 (or Earlier)
    • Screenshot No. 1: နမူနာ အေနနဲ႔ Microsoft Excel 2002-2003 မွာဆိုရင္ေတာ့ ဒီလိုေတြ႕ရပါလိမ့္မယ္။


    • Screenshot No. 2: Visual Basic Editor ဆိုတာ ကို ႏွိပ္လိုက္ရင္ ေအာက္က ပံုစံ ေပၚလာပါလိမ့္မယ္။ အထဲမွာ VBA Code ေတြ ကို ကူးယူၿပီးရင္ ဒီလို ေတြ႔ႏိုင္ပါတယ္။




    Excel 2007
    • Screenshot No. 3: 2007 အထက္ ဆိုရင္ေတာ့ Tools အစား Developer Tab အေနနဲ႔ ဝင္လာပါတယ္။


    • Screenshot No. 4: တစ္ခါတစ္ရံ Developer Tab ကို ေဖ်ာက္ ထားတတ္ပါေသးတယ္။ ဒါဆိုရင္ ေတာ့ excel option ေအာက္ကေန သြားရွာ ရပါလိမ့္မယ္။ (မေသခ်ာ ရင္ Help မွာ ရွာၾကည့္ပါ။)


      Screenshot No. 5:


    • အထက္မွာ ေျပာခဲ့တဲ့ အတိုင္း VBA က Macro Security Level ေပၚမူတည္ ၿပီး အလုပ္လုပ္ခြင့္ ေပးရပါတယ္။ Powerful Operation ေတြမို႔ Macro Security အေၾကာင္းကို ေသေသခ်ာခ်ာ ေလ့လာ သိရွိထားဘို႔ လိုအပ္ပါတယ္။ Screenshot No. 6:


    • Screenshot No. 7:Developer Tab ေအာက္ က Code ေနရာ မွာ လည္း Macro Security ဆိုတာ ရွိပါတယ္။ ထြက္လာမဲ့ Screen ကေတာ့။


    ...Back to Top ....
  6. Screenshots: Use of VBA Functions in Excel Worksheet
    • ၿပီးရင္ေတာ့ ဒီ Function ေတြကို Excel Spreadsheet မွာ အသင့္သံုးႏိုင္ပါၿပီ။
    • ပထမ Insert function ကိုသြားၿပီး select a category မွာ User Defined ကိုေရြးလိုက္ရင္ ဒီ Function ေတြ ေပၚလာပါလိမ့္မယ္။

    • ၿပီးရင္ေတာ့ Excel Formula သံုးေနက် အတိုင္းသံုးရံုပါပဲ။
      ဒီအထဲ မွာ Air_cmh ဆိုတဲ့ ကြက္လပ္ကိုေတာ့ ျဖည့္ကို ျဖည့္ရပါမယ္။ အျခား ကြက္လပ္ေတြ ကို Function မွာထဲ က Optional အေနနဲ႔ ေရြးၿပီး Assign လုပ္ထားတာမို႔ မျဖည့္လည္း ရပါတယ္။ Assigned လုပ္ခဲ့တဲ့ value ေတြကေတာ့ အသံုးမ်ားတဲ့
      • dP_Pa = 1
      • V_mps = 8
      • E_mm = 0.09

    • ၿပီး Excel Style: Drag-Coppy လုပ္လိုက္ရင္ ရမဲ့ အေျဖကေတာ့၊


    • ဒီကရတဲ့ အေျဖက Chart ကေနၾကည့္လို႔ ရတဲ့ အေျဖနဲ႔ အတူတူေလာက္ပါပဲ။ တကယ္ အေသးစိတ္ တြက္လို႔ ရမဲ့ အေျဖရဲ့ ± 1% အတြင္းမွာ ရွိတာမို႔ safety factor ထည့္ယူေလ့ရွိတဲ့ အင္ဂ်င္နီယာ ေတြအတြက္ လံုေလာက္ပါတယ္။
      မွတ္ခ်က္။ ။ Excel Calculation Sheet File ေတြ ကို အျခားသူေတြ ဆီ ပို႔ေပးရတဲ့ အခါမွာေတာ့ ဒီ Function VBA Codes ေတြ အဲဒီ file ထဲမွာ မပါရင္ အလုပ္လုပ္ မွာ မဟုတ္ပါဘူး။ အရွင္းဆံုး နည္းလမ္းကေတာ့ Function VBA Codes ေတြ ထည့္မေပး ပဲ Function ေတြ နဲ႔တြက္ ၿပီး ရလာတဲ့ အေျဖ ရွိတဲ့ Cell ေတြက အေျဖ ကို Copy ကူး၊ ၿပီး Paste Special မွာ values ကို ေရြးၿပီး ျပန္ထည့္လိုက္ပါ။ Chart ၾကည့္ၿပီး Manually ရိုက္ထည့္ ထားသလို မ်ိဳးေပါ့။

    ...Back to Top ....
  7. Html Color Coding by VBA
    • အေပၚက VBA code ေတြမွာ အေရာင္ေတြ ခြဲေပးထားတာ က လည္း VBA ကို သံုးၿပီး html format ကို ေပးထားလို႔ပါ။ ဒါကိုေတာ့ MS Word ေအာက္မွာ ေရးၿပီးသံုးပါတယ္။ အပို သိပ္မပါပဲ ရွင္းရွင္းလင္းလင္း ျမင္ရေအာင္ format လုပ္ဘို႔က html မွာ သိပ္ မလြယ္ကူ လွပါဘူး။ အခ်ိန္လည္း အရမ္းကုန္ပါတယ္။ သူ႕ရဲ့ VBA Code ကိုေတာ့ ရႈတ္ေထြးတာ မို႔ မေဖာ္ျပေတာ့ပါဘူး။

    ...Back to Top ....
  8. References
    1. "Duct Design", Chapter 21, ASHRAE Handbook: Fundamentals, 2009.
    2. Visual Basic for Applications
    3. Using Flow Chart - Flowcharting[ http://www.nos.org/htm/basic2.htm ]
    4. HVAC Duct Sizing[ http://chawlwin.blogspot.com/2009/07/hvac-duct-sizing.html ]



Disclaimer
  • Programming နဲ႔ သံုးလို႔ရတယ္ ဆိုတာ ကို မိတ္ဆက္ ေပးခ်င္ လို႔ပါ။ ၿပီးေတာ့ အခ်ိန္ကုန္ သက္သာ ေစခ်င္တာလည္း ပါပါတယ္။
  • အတတ္ႏိုင္ဆံုး ႀကိဳးစားထားေပမဲ့ အမွား လံုးဝကင္းပါတယ္ လို႔ အာမ မခံႏိုင္ပါဘူး။ စာဖတ္သူ ကိုယ္တုိုင္ သံုးစြဲၿပီး ၾကည့္ၿပီး အေျဖမွန္ ေပးႏိုင္ေၾကာင္း ေသခ်ာမွ သံုးစြဲပါလို႔ အသိေပး လိုပါတယ္။

...Back to Top ....

No comments: