:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

ฟอรัมถาม-ตอบเกี่ยวกับ Visual Basic
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่างเพิ่มเติม)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
User avatar
cheapache
Member
Member
Posts: 72
Joined: Mon Sep 07, 2015 10:39 am

สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#1

Post by cheapache »

Code: Select all

    Public Sub btnTransfer_Click(sender As Object, e As EventArgs) Handles btnTransfer.Click

        If txtMaximumTank.Text <= txtVolumeWater.Text Then

            Dim result14 As DialogResult = MessageBox.Show("The capacity of the tank is less than that required to maintain the water level.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
            If txtMaximumTank.Text = "" Then
                Dim result As DialogResult = MessageBox.Show("Please you specify maximum capacity of tank.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            End If
        End If
        If txtVolumeWater.Text >= txtMaximumTank.Text Then
            Dim result15 As DialogResult = MessageBox.Show("The water level you specify exceeds tank capacity.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
            If txtVolumeWater.Text = "" Then
                Dim result1 As DialogResult = MessageBox.Show("Please you specify level water do you need maintain.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)

                ' result1.OK Then
                'txtVolumeWater.Text = (txtMaximumTank.Text - 2)
                'End If
            End If
        End If

        If txtCapacityA.Text = "" Then
            Dim result2 As DialogResult = MessageBox.Show("Please you speccify capacity of bottle fertilizer A.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtCapacityB.Text = "" Then
            Dim result3 As DialogResult = MessageBox.Show("Please you speccify capacity of bottle fertilizer B.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtFertilizerA.Text = "" Then
            Dim result4 As DialogResult = MessageBox.Show("Fertilizer A 2 CC. per liquid 1 liter.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtFertilizerB.Text = "" Then
            Dim result5 As DialogResult = MessageBox.Show("Fertilizer B 2 CC. per liquid 1 liter.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtTemp.Text = "" Then
            Dim result6 As DialogResult = MessageBox.Show("Please you specify temperature value of water (should not more than 35 °C.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtHumidity.Text = "" Then
            Dim result7 As DialogResult = MessageBox.Show("Please you specify Humidity value for control. (Should between value 40-60 %Rh.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEc.Text = "" Then
            Dim result8 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEC2.Text = "" Then
            Dim result16 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEC3.Text = "" Then
            Dim result17 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtEC4.Text = "" Then
            Dim result18 As DialogResult = MessageBox.Show("Please you specify EC value.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If


        If CheckBox1.Checked = True Then
            If txtpHMin.Text Or txtpHMax.Text = "" Then
                Dim result9 As DialogResult = MessageBox.Show("Please you specify pH value (The value should between 5.5 - 6.2)", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Question)
                'Exit Sub
            End If
        ElseIf CheckBox1.Checked = False Then
            Dim result13 As DialogResult = MessageBox.Show("pH function closed.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Question)
        End If

        If TextBox5.Text = "" Then
            Dim result10 As DialogResult = MessageBox.Show("Please you specify time of grow.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If TextBox3.Text = "" Then
            Dim result11 As DialogResult = MessageBox.Show("Please you specify time for delay before put fertilizer B.", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        If txtFlowwater.Text = "" Then
            Dim result12 As DialogResult = MessageBox.Show("Please you specify time for flow normal water", "System message : ", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If

        Dim variableTank As Integer = txtMaximumTank.Text
        Dim variableVolumeTank As Integer = txtVolumeWater.Text
        Dim capacityA As Integer = txtCapacityA.Text
        Dim capacityB As Integer = txtCapacityB.Text
        Dim variableTemp As Integer = txtTemp.Text
        Dim variableHumi As Integer = txtHumidity.Text
        Dim variableEC As Double = txtEc.Text
        Dim variableEC2 As Double = txtEC2.Text
        Dim variableEC3 As Double = txtEC3.Text
        Dim variableEC4 As Double = txtEC4.Text
        Dim variableA As Integer = txtFertilizerA.Text
        Dim variableB As Integer = txtFertilizerB.Text

        Dim variablepHMin As Double = (CDbl(txtpHMin.Text))
        Dim variablepHMax As Double = (CDbl(txtpHMax.Text))

        Dim variablephMin2 As Double = 1.0
        Dim variablephMax2 As Double = 1.0

        Dim variableDay As Integer = TextBox5.Text
        Dim variableMin As Integer = TextBox3.Text
        Dim variableFlow As Integer = txtFlowwater.Text

        PumpFlow = 2
        ValveFeedin = 2
        ValveFeedout = 2
        PumpA = 2
        PumpB = 2
        ValveFogger = 2


        If CheckBox1.Checked = True Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablepHMin * 10) & "" & (variablepHMax * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        ElseIf CheckBox1.Checked = False Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablephMin2 * 10) & "" & (variablephMax2 * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        End If


        ListBox1.Items.Add(data)

        'SerialPort1.PortName = comport
        'SerialPort1.BaudRate = baudrate
        'SerialPort1.Open()
        'If SerialPort1.IsOpen Then
        'SerialPort1.WriteLine(data)
        'SerialPort1.Close()
        'End If
    End Sub
ด้านบนนี้เป็นโค๊ดที่ใช้งานได้ปกติครับ แต่ถ้าหากไม่กดปุ่มนี้ก่อน แล้วไปกดปุ่มอื่นที่มีคำสั่งเหมือนกัน โปรแกรมจะแจ้งว่า ให้ Convert from string to integer

Code: Select all

 Dim variableTank As Integer = (CInt(txtMaximumTank.Text))
        Dim variableVolumeTank As Integer = txtVolumeWater.Text
        Dim capacityA As Integer = txtCapacityA.Text
        Dim capacityB As Integer = txtCapacityB.Text
        Dim variableTemp As Integer = txtTemp.Text
        Dim variableHumi As Integer = txtHumidity.Text
        Dim variableEC As Double = txtEc.Text
        Dim variableEC2 As Double = txtEC2.Text
        Dim variableEC3 As Double = txtEC3.Text
        Dim variableEC4 As Double = txtEC4.Text
        Dim variableA As Integer = txtFertilizerA.Text
        Dim variableB As Integer = txtFertilizerB.Text

        Dim variablepHMin As Double = (CDbl(txtpHMin.Text))
        Dim variablepHMax As Double = (CDbl(txtpHMax.Text))

        Dim variablephMin2 As Double = 1.0
        Dim variablephMax2 As Double = 1.0

        Dim variableDay As Integer = TextBox5.Text
        Dim variableMin As Integer = TextBox3.Text
        Dim variableFlow As Integer = txtFlowwater.Text


        PumpFlow = 0


        'data = ("" & variableTank & "" & variableVolumeTank & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & variableA & "" & variableB & "" & variableDay & "" & variableMin & "" & (variablepHMin * 10) & "" & (variablepHMax * 10) & "\")
        If CheckBox1.Checked = True Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablepHMin * 10) & "" & (variablepHMax * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        ElseIf CheckBox1.Checked = False Then
            data = ("" & variableTank & "" & variableVolumeTank & "" & capacityA & "" & capacityB & "" & variableA & "" & variableB & "" & variableTemp & "" & variableHumi & "" & (variableEC * 10) & "" & (variableEC2 * 10) & "" & (variableEC3 * 10) & "" & (variableEC4 * 10) & "" & (variablephMin2 * 10) & "" & (variablephMax2 * 10) & "" & variableDay & "" & variableMin & "" & variableFlow & "" & PumpFlow & "" & ValveFeedin & "" & ValveFeedout & "" & PumpA & "" & PumpB & "" & ValveFogger & "\")
        End If

        'data1 = ("" & txtMaximumTank.Text & "\")
        ListBox1.Items.Add(data)

        'SerialPort1.PortName = comport
        'SerialPort1.BaudRate = baudrate
        'SerialPort1.Open()
        'If SerialPort1.IsOpen Then
        'SerialPort1.WriteLine(data)
        'SerialPort1.Close()
        'End If
    End Sub
ผมลองใส่ CInt ตรงที่โปรแกรมแจ้ง error แล้วครับ แต่ก็ยังไม่หาย ไม่ทราบว่าเกิดจากอะไรครับ รบกวนอาจารย์ด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#2

Post by snasui »

:D ลอง Run ทีละ Step แล้วสังเกตว่าติดตรงบรรทัดใดครับ
User avatar
cheapache
Member
Member
Posts: 72
Joined: Mon Sep 07, 2015 10:39 am

Re: สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#3

Post by cheapache »

ลองรันทีละ step ดูแล้วครับ พอชี้ที่ ตัวแปร txtMaximumtank.text มันขึ้นว่ายังเป็น "" อยู่หมายถึงไม่มีค่าตัวแปร

แต่เมื่อลองเอา msgbox(txtMaximumtank.text) เช็คตอนฟอร์มโหลด มันขึ้น 12 ครับ แต่ทำไมตอนกดปุ่ม ค่าใน txtMaximumtank.txt ในตอนแรกถึงยังเป็น "" เพราะเมื่อเปิดฟอร์มใหม่ขึ้นมา ผมเขียนให้ข้อมูลที่อยู่ใน textbox.text ทุกตัว ถูกเก็บไว้ใน My.Setting()
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: สอบถามเรื่อง เพราะเหตุใด Event ของ Button ทำงานไม่เหมือนกัน

#4

Post by snasui »

:D เช็คตอน Form Load แล้วได้ค่านั้นแสดงว่ามันต้องมีค่าอยู่ใน ตัวแปร txtMaximumtank อยู่ก่อนที่จะคลิกปุ่มอื่น

หากเป็นเช่นนี้ Code ไม่ควร Error ยกเว้นปิด Form นั้นไปแล้วค่าจึงจะถูกลบออกจาก Memory ครับ
Post Reply