Page 1 of 1

ผมทำasign macro แล้ว มันเกิดerror ครับ

Posted: Sat Aug 18, 2012 10:14 am
by sahavit
ผมทำasign macro แล้ว มันเกิดerror ครับถ้าลองลบคำสั่งgoal seek ในvba โปรแกรมจาสามารถรันได้ครับแต่จะไม่สามารถคำนวณได้เหมือน

Re: ผมทำasign macro แล้ว มันเกิดerror อะครับ

Posted: Sat Aug 18, 2012 11:09 am
by snasui
sahavit wrote:ผมทำasign macro แล้ว มันเกิดerror อะครับถ้าลองลบคำสั่งgoal seek ในvba โปรแกรมจาสามารถรันได้อะครับแต่จะไม่สามารถคำนวณได้เหมือน
:D ในฟอรัมถามตอบงดใช้ภาษาแชทครับ ตามกฎการใช้บอร์ดข้อ 1 :roll: หากเลยเวลา 60 นาทีมาแล้วจะแก้ไขไม่ได้ ให้เขียนคำถามใหม่ด้วยภาษาปกติครับ

Re: ผมทำasign macro แล้ว มันเกิดerror ครับ

Posted: Sun Aug 19, 2012 9:08 am
by snasui
:D จาก Code ที่เขียนมาไม่ได้บอกโปรแกรมว่าต้องการให้คำนวณในชีทไหน เมื่อเป็นเช่นนั้นโปรแกรมจะทำงานในชีทที่กำลัง Active อยู่เสมอ จึงควรจะบอกด้วยว่า Range ที่ให้ทำงานนั้นอยู่ในชีทใด ผมเพิ่ม With...End With เข้าไปให้ ดูตาม Code ด้านล่างครับ

Code: Select all

Sub Macro1()
'
' Macro1 Macro
'
Dim i As Integer
On Error Resume Next
With Sheets("nitrogen")
    For i = 1 To 109
        If i = 1 Then
            cd = InputBox("input cd")
            .Range("m23") = cd
            Pinttank1 = InputBox("input P1int")
            .Range("r1") = Pinttank1
            r1 = InputBox("input R1")
            .Range("r14") = r1
            Temperature1 = InputBox("input T1int")
            .Range("r3") = Temperature1
            .Range("b156") = .Range("r1")
            .Range("d156") = .Range("r2")
            .Range("f156") = .Range("r3")
            Vguess = InputBox("input specificvolumn1")
            .Range("D157") = Vguess
            .Range("b157").Formula = "=B156"
            .Range("b158").Formula = "=m27*F156/D157+B162*m27*F156/D157^2"
            .Range("b159").Formula = "=B157-B158"
            .Range("b159").Select
            .Range("b159").GoalSeek Goal:=0, ChangingCell:=.Range("D157")
            .Range("a3") = .Range("d158")
            Pinttank2 = InputBox("input P2int")
            .Range("r4") = Pinttank2
            r2 = InputBox("input r2")
            .Range("r15") = r2
            Temperature2 = InputBox("input T2int")
            .Range("r6") = Temperature2
            .Range("b165") = .Range("r4")
            .Range("d165") = .Range("r5")
            .Range("f165") = .Range("r6")
            Vguess = InputBox("input specificvolumn2")
            .Range("D166") = Vguess
            .Range("b166").Formula = "=B165"
            .Range("b167").Formula = "=m27*F165/D166+B171*m27*F165/D166^2"
            .Range("b159").Formula = "=B166-B167"
            .Range("b168").Select
            .Range("b168").GoalSeek Goal:=0, ChangingCell:=.Range("D166")
            .Range("b3") = .Range("d167")
            .Range("b177").Formula = "=A175*B176+(B175*B176^2)/2+(C175*B176^3)/3+(D175*B176^4)/4"
            .Range("b178").Formula = "=(F165+273)/2"
            .Range("b185").Formula = "=(B178*B184+B181)*(B156-1)/10"
            .Range("b186").Formula = "=B177+B185"
            .Range("c3") = .Range("b186")
            .Range("b190").Formula = "=F165-273"
            .Range("b191").Formula = "=A189*B190+(B189*B190^2)/2+(C189*B190^3)/3+(D189*B190^4)/4"
            .Range("d3") = .Range("b191")
            deltan = InputBox("input n")
            .Range("d1") = deltan
            guessTemp1 = InputBox("input T1")
            .Range("c119") = guessTemp1
            .Range("b113").Formula = "=a4"
            .Range("b140").Formula = "= ((C3-D3)/2)*(D1/A4)"
            .Range("b138").Formula = "= c3+b140"
            .Range("b139").Select
            .Range("b139").GoalSeek Goal:=0, ChangingCell:=.Range("c119")
            .Range("g2") = .Range("c119")
            .Range("f2") = .Range("b132")
            .Range("c4") = .Range("b138")
            .Range("b113").Formula = "=b4"
            guessTemp1 = InputBox("input T2")
            .Range("c119") = guessTemp1
            .Range("b140").Formula = "= ((C3-D3)/2)*(D1/b4)"
            .Range("b138").Formula = "= D3+b140"
            .Range("b139").Select
            .Range("b139").GoalSeek Goal:=0, ChangingCell:=.Range("c119")
            .Range("b146").Formula = "=SQRT((f2-h2)*10^5)"
            .Range("i2") = .Range("c119")
            .Range("h2") = .Range("b132")
            .Range("d4") = .Range("b138")
            .Range("j2") = .Range("b151")
        Else
            If .Range("f" & i) < .Range("h" & i) Then Exit For
            .Range("b113") = .Range("a" & i + 3)
            .Range("a142") = .Range("c" & i + 2)
            .Range("a144") = .Range("a" & i + 4)
            .Range("b142") = .Range("d" & i + 2)
            .Range("b140").Formula = "= ((a142-b142)/2)*(D1/A144)"
            .Range("b138").Formula = "= a142+b140"
            .Range("b139").Select
            .Range("b139").GoalSeek Goal:=0, ChangingCell:=.Range("c119")
            .Range("c" & i + 3) = .Range("b138")
            .Range("G" & i + 1) = .Range("c119")
            .Range("F" & i + 1) = .Range("b132")
            .Range("b144") = .Range("b" & i + 4)
            .Range("b113") = .Range("b" & i + 3)
            .Range("b140").Formula = "= ((a142-b142)/2)*(D1/b144)"
            .Range("b138").Formula = "= b142+b140"
            .Range("b139").Select
            .Range("b139").GoalSeek Goal:=0, ChangingCell:=.Range("c119")
            .Range("b146").Formula = "=SQRT((a154-b154)*10^5)"
            .Range("a154") = .Range("f" & i + 1)
            .Range("b154") = .Range("h" & i + 1)
            .Range("i" & i + 1) = .Range("c119")
            .Range("h" & i + 1) = .Range("b132")
            .Range("d" & i + 3) = .Range("b138")
            .Range("j" & i + 1) = .Range("j" & i) + .Range("b151")
            .Range("r12") = .Range("j" & i + 1)
            .Range("r8") = .Range("f" & i + 1)
            .Range("r10") = .Range("h" & i + 1)
            .Range("r9") = .Range("g" & i + 1)
            .Range("r11") = .Range("i" & i + 1)
        End If
    Next i
End With
End Sub

Re: ผมทำasign macro แล้ว มันเกิดerror ครับ

Posted: Sun Aug 19, 2012 10:47 am
by sahavit
ขอบคุณครับ โปรแกรมสามารถrunได้แล้วครับ