Page 1 of 1

การใช้ if - vba ครับ

Posted: Thu Nov 12, 2015 10:40 am
by yodpao.b
การใช้ if - vba ครับ
Pro.JPG
จากรูปบน
ในช่อง EER ถ้าพิมพ์ เลขที่ต่ำกว่า 11.59 ให้ฟ้องว่าพิมพ์ผิด
ข้อแม้คือ ในช่องขนาดมีค่า < 27290 และ ช่อง EER มีค่ามากกว่าหรือเท่ากับ 11.6 จึงสามารถทำงานต่อได้แต่ถ้าไม่ใช่ให้แสดงข้อความ" กรอกข้อมูลผิด "

จากโคดที่ทำ
สมมุติจะพิมพ์เลข 14
พอพิมพ์ตัวเลข 1 ก็แสดงข้อความแล้ว (ยังพิมพ์ไม่เสร็จครับ)
โคด

Code: Select all

Private Sub TextBox1_Change()

'Sheets("CAL4").Range("C2").Value = TextBox1.Value

If ComboBox1 < 27296 And TextBox1.Value >= 11.6 Then
        Sheets("CAL4").Range("C2").Value = TextBox1.Value
               Else
               MsgBox " ท่านต้องกรอกข้อมูลผิด"
End If
End Sub

Re: การใช้ if - vba ครับ

Posted: Thu Nov 12, 2015 11:12 am
by yodpao.b
ขอบคุณครับเจอแล้วครับใช้
คีย์ได้แล้วครับ

Code: Select all

Private Sub TextBox1_LostFocus()
ใช้คำสั่งนี้แทนครับ

Re: การใช้ if - vba ครับ

Posted: Thu Nov 12, 2015 12:33 pm
by yodpao.b
Pro.JPG
จากรูป
1.ช่องขนาดมีค่า 40000
2.คีย 16 ที่ช่องEER
3.MsgBox ขึ้น มา 2 หน ผิด
ที่ถูกต้องขึ้นมาครั้งเดียว
คำถาม
ต้องการให้ MsgBox ที่มีข้อความ MsgBox "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด >27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.00 - 12.80"
นี้แสดง เพาระว่า ในช่องขนาดมีค่า 40000 ซึ่งมีค่ามากกว่า 27296
และ
1.ช่องขนาดมีค่า 20000
2.คีย 11 ที่ช่องEER
3.MsgBox ขึ้น มา 2 หน ผิด
ที่ถูกต้องขึ้นมาครั้งเดียว
คำถาม
ต้องการให้ MsgBox ที่มีข้อความ MsgBox "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด <=27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.60 - 12.80"
นี้แสดง เพาระว่า ในช่องขนาดมีค่า 20000 ซึ่งมีค่าน้อยกว่า 27296

จุดประสงค์คือต้องการ ให้โคด IF ทั้ง 2 รวมกันครับ ไม่ทราบว่าจะต้องเขียนโดคอย่างไร

Code: Select all

Private Sub TextBox1_LostFocus()

If ComboBox1 <= 27296 And TextBox1.Value >= 11.6 And TextBox1.Value <= 12.8 Then
        Sheets("CAL4").Range("C2").Value = TextBox1.Value
            Else
                MsgBox "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด <=27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.60 - 12.80", vbExclamation, "ท่านต้องกรอกตัวเลขผิด"
                TextBox1.Value = ""
End If

If ComboBox1 > 27296 And TextBox1.Value >= 11 And TextBox1.Value <= 12.8 Then
        Sheets("CAL4").Range("C2").Value = TextBox1.Value
            Else
                MsgBox "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด >27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.00 - 12.80", vbExclamation, "ท่านต้องกรอกตัวเลขผิด"
                TextBox1.Value = ""
End If

End Sub

Re: การใช้ if - vba ครับ

Posted: Thu Nov 12, 2015 6:30 pm
by snasui
:D ลองอธิบายเฉพาะเงื่อนไขมาใหม่ให้ครบถ้วนทุกเงื่อนไข Code ครับ

Re: การใช้ if - vba ครับ

Posted: Thu Nov 12, 2015 8:20 pm
by yodpao.b
เงื่อนไขแรก
ในช่อง eer สามารถพิมพ์เลขได้ตั้งแต่11.00-12.80 ได้ก็ต่อเมื่อช่องขนาดมีค่ามากว่า 27296 ถ้าไม่ถูกต้องให้ข๊น MsgBox ที่มีข้อความ "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด >27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.00 - 12.80"
เงือ่นไขที่2
ในช่อง eer สามารถพิมพ์เลขได้ตั้งแต่11.60-12.80 ได้ก็ต่อเมื่อช่องขนาดมีค่าน้อยกว่า 27296 ถ้าไม่ถูกต้องให้ข๊น MsgBox ที่มีข้อความ "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด <27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.60 - 12.80"
ขอความกรุณาด้วยครับ
ถ้าพิมพ์ไปขอโทษด้วยครับใช้มือถือพิมพ์ครับ

Re: การใช้ if - vba ครับ

Posted: Thu Nov 12, 2015 9:05 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

If CDbl(ComboBox1) <= 27296 Then
    If TextBox1.Value >= 11.6 And TextBox1.Value <= 12.8 Then
        Sheets("CAL4").Range("C2").Value = TextBox1.Value
    Else
        MsgBox "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด <=27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.60 - 12.80", vbExclamation, "ท่านต้องกรอกตัวเลขผิด"
            TextBox1.Value = ""
    End If
ElseIf ComboBox1 > 27296 Then
    If TextBox1.Value >= 11 And TextBox1.Value <= 12.8 Then
        Sheets("CAL4").Range("C2").Value = TextBox1.Value
    Else
        MsgBox "เครื่องปรับอากาศเบอร์ 5 ที่มีขนาด >27,296 บีทียู/ชั่วโมง ประสิทธิภาพการทำความเย็น(EER) มีค่าตั้งแต่ 11.00 - 12.80", vbExclamation, "ท่านต้องกรอกตัวเลขผิด"
            TextBox1.Value = ""
    End If
Else
    MsgBox "Not match any condition."
End If

Re: การใช้ if - vba ครับ

Posted: Fri Nov 13, 2015 10:58 am
by yodpao.b

Code: Select all

Else
    MsgBox "Not match any condition."
End If
โคดบรรทัดนี้จะฟ้องตอนไหนครับ(หมายถึงคึย์อะไรแล้วจึงฟ้องครับ)

Re: การใช้ if - vba ครับ

Posted: Fri Nov 13, 2015 1:17 pm
by logic
อาจารย์เขียนเผื่อไว้ให้ครับ ความหมายก็ตามนั้น คือเมื่อไม่เข้าเงื่อนไขใดก็ค่อยแสดงข้อความในส่วนของ else หากเห็นว่าจะต้องเข้าเงื่อนไขใดๆ สักอันก่อนหน้าแน่นอน ลบออกได้ตามสะดวกครับ :)

Re: การใช้ if - vba ครับ

Posted: Fri Nov 13, 2015 3:56 pm
by yodpao.b
เข้าใจแล้วครับ
ขอบคุณครับ