Page 2 of 3

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 13, 2014 4:48 pm
by porkub1
อาจารย์ ครับ จากที่ถามข้างบนผมแก้ไขได้แล้วครับ ขอบคุณแนวทางอาจารย์มากครับ ช่วยได้มากเลยครับ

ทีนี้ผมมีคำถามว่า จากชีทแบบสอบถามในข้อ 1.1 ผมติดตรงที่เวลาตอบคำถามว่า
ให้ใช่ และต้องกรอกข้อความในกล่อง จะผ่านไป ข้อ 1.2 อันนี้ไม่มีปัญหา แต่
เวลาติ๊กที่ "ยังไม่" แต่ถ้าเรากรอกข้อความลงในกล่อง จะยังสามารถผ่านไปไดข้อ 1.2 ได้อยู่ ซึ่งผมไม่ต้องการแบบนี้ อยากให้ ถ้าติ๊กยังไม่ ต่อให้กรอกข้อความก็ไม่สามารถผ่านได้

Code: Select all

Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then
 strvaluemsg = MsgBox("กรุณาระบุผลลัพธ์ของท่านในขั้นตอนนี้", vbOKOnly + 64, "กรุณาอ่าน ")
Else: strvaluemsg = MsgBox("ข้อมูลของท่านได้บันทึกแล้ว  ไปข้อที่ 1.2")
Application.Goto reference:="ques1.2"

 End If
End Sub

Private Sub CommandButton2_Click()
MsgBox ("กรุณากรอกขั้นตอนนี้ อีกครั้ง ขอบคุณ")
End Sub

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 13, 2014 4:52 pm
by porkub1
แล้วอยากถามว่า ผมสามารถ แก้ไข วัตถุที่เป็น macros หรือที่มาจาก form controls ในวัตถุที่เป็น activex ได้ หรือไม่ครับ เพราะเวลาอ้างชื่อวัตถุที่เป็น macros มีเตือนขึ้นมา ขอบคุณครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 13, 2014 5:56 pm
by snasui
:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    If TextBox1.Value = "" Then
        MsgBox "กรุณาระบุผลลัพธ์ของท่านในขั้นตอนนี้", vbOKOnly + 64, "กรุณาอ่าน "
    Exit Sub
    End If
    If Sheets("แบบสอบถาม").OptionButtons("Option Button 81").Value = 1 Then
       MsgBox "กรุณาอ่าน"
       Exit Sub
    End If
    MsgBox ("ข้อมูลของท่านได้บันทึกแล้ว  ไปข้อที่ 1.2")
    Application.Goto reference:="ques1.2"
End Sub
porkub1 wrote:แล้วอยากถามว่า ผมสามารถ แก้ไข วัตถุที่เป็น macros หรือที่มาจาก form controls ในวัตถุที่เป็น activex ได้ หรือไม่ครับ เพราะเวลาอ้างชื่อวัตถุที่เป็น macros มีเตือนขึ้นมา ขอบคุณครับ
ไม่จำเป็นต้องแก้ครับ ไม่ว่าจะเป็น Form Control หรือ ActiveX Control ก็สามารถเขียน Code เข้าไปกำกับได้ทั้งนั้นครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Fri Feb 14, 2014 1:36 pm
by porkub1
:thup: :thup: :thup: ขอขอบพระคุณอาจารย์นะครับ ผมทำได้ในส่วนที่ผมติดปัญหาเกือบทั้งหมดแล้ว ทำให้ผมได้ความรู้เกี่ยว vba มากเลยครับ ถ้าบอร์ดนี้ มีอะไรให้ช่วยเหลือขอให้บอกผมมาได้เลยนะครับ

ขอให้อาจารย์ snasui มีความสุขความเจริญ นะครับ ขอบคุณจริงๆๆครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Mon Feb 17, 2014 1:46 pm
by porkub1
อาจารย์ครับ ขอสอบถามเพิ่มเติม ในการบันทึกข้อมูลข้อความที่กรอกใน textbox ตอนนี้จะบันทึกทับข้อมูลกัน เมื่อเวลากรอกใหม่

ทีนี้ผมอยากจะให้ จากในไฟล์ที่แนบ ผมได้สั่งให้บันทึก คือ ข้อ 1.1 กล่องข้อความ (textbox1) ข้อมูลที่กรอกกล่องนี้จะอยู่ใน เซลล์ A9
ที่นี้อยากให้ การบันทึกเมื่อกรอกครั้งแรก จะอยู่ใน เซลล์ A9 และบันทึกครั้งที่ 2 ในกล่องเดิม จะขอให้อยู่ เซลล์ A19 ครับ และบันทึกครั้งที่ 3 ในกล่องเดิม จะขอให้อยู่ เซลล์ A29 ครับ

ขอแนบโค้ดครับ

Code: Select all

Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then
 strvaluemsg = MsgBox("กรุณาระบุผลลัพธ์ของท่านในขั้นตอนนี้", vbOKOnly + 64, "กรุณาอ่าน ")
Else: strvaluemsg = MsgBox("ข้อมูลของท่านได้บันทึกแล้ว  ไปข้อที่ 1.2")
Worksheets("บันทึกข้อมูล").Range("a9") = TextBox1.Value
Application.Goto reference:="ques1.2"

 End If
End Sub[attachment=0]Flowchartภาค(จัดทำจริงส่งคำถาม)2.xlsm[/attachment]



อันนี้ผมลองหาวิธีมาหลายวันแล้ว ยังหาไม่เจอ ยังไงรบกวนอาจารย์ด้วยนะครับ ขอบพระคุณครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Mon Feb 17, 2014 6:58 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    If TextBox1.Value = "" Then
        strvaluemsg = MsgBox("กรุณาระบุผลลัพธ์ของท่านในขั้นตอนนี้", vbOKOnly + 64, "กรุณาอ่าน ")
    Else: strvaluemsg = MsgBox("ข้อมูลของท่านได้บันทึกแล้ว  ไปข้อที่ 1.2")
        With Worksheets("บันทึกข้อมูล")
            If .Range("a9") = "" Then
                .Range("a9") = TextBox1.Value
            Else
                .Range("a" & Rows.Count).End(xlUp).Offset(10, 0) = TextBox1.Value
        End With
        Application.Goto reference:="ques1.2"
    End If
End Sub

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Tue Feb 18, 2014 8:42 am
by porkub1
:cp: :cp: ได้แล้วครับอาจารย์ ขอบพระคุณอาจารย์ มากครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Tue Feb 18, 2014 11:39 am
by porkub1
snasui wrote::D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    If TextBox1.Value = "" Then
        strvaluemsg = MsgBox("กรุณาระบุผลลัพธ์ของท่านในขั้นตอนนี้", vbOKOnly + 64, "กรุณาอ่าน ")
    Else: strvaluemsg = MsgBox("ข้อมูลของท่านได้บันทึกแล้ว  ไปข้อที่ 1.2")
        With Worksheets("บันทึกข้อมูล")
            If .Range("a9") = "" Then
                .Range("a9") = TextBox1.Value
            Else
                .Range("a" & Rows.Count).End(xlUp).Offset(10, 0) = TextBox1.Value
        End With
        Application.Goto reference:="ques1.2"
    End If
End Sub

เพิ่มเติมนะครับ ถ้ากรณีจะสามารถ เป็น เซลล์ที่กำนดเอง เช่น ครั้งแรกกำหนดข้อมูลที่ a11 ครั้งที่สองกำหนดที่ b25 ครั้งที่สามกำหนดที่ g 18 นี่เราจะกำหนดอย่างไรครับ ขอบพระคุณครับ อาจารย์

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Tue Feb 18, 2014 12:01 pm
by porkub1
จากคำถามเพิ่มเติมได้แล้วนะครับ อาจารย์ ลองจนได้แล้วครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 3:23 pm
by porkub1
อาจารย์ครับ สอบถาม ผมต้องการ clear data ในชีทชื่อ "แบบสอบถามที่3" ซึ่งต้องการให้ กดปุ่มยกเลิก จะเคลียร์ data ใน textbox1 แล้วให้ ปุ่ม check box ถ้าเลือก ใช่ กับ ไม่ ให้กลับมา กล่องที่ว่าง ครับ คือให้ กลับไปอยู่ที่ option button 11 เมื่อกดปุ่มยกเลิก พอทำได้มั้ยครับ

โค้ดครับ

Code: Select all

Private Sub CommandButton2_Click()

MsgBox ("กรุณากรอกขั้นตอนนี้ อีกครั้ง ขอบคุณ")
' clear the data
Me.TextBox1.Value = ""
End Sub

จากแบบสอบถาม อยากให้บันทึก ค่าเมื่อกรอก เช่น ใช่ =1 ไม่ =0
ลงในชีท "บันทึกข้อมูล" โดย ใช่ อยู่ใน e16 ไม่บันทึกใน i22

โค้ดครับ

Code: Select all

If TextBox1.Value = "" Then
        strvaluemsg = MsgBox("ทดสอบ", vbOKOnly + 64, "อ่าน")
    Else: strvaluemsg = MsgBox("ไปข้อ 1.2")
        With Worksheets("บันทึกข้อมูล")
            If .Range("a9") = "" Then
                .Range("a9") = TextBox1.Value
            Else
                .Range("b" & Rows.Count).End(xlUp).Offset(10, 0) = TextBox1.Value
             .Range("d" & Rows.Count).End(xlUp).Offset(3, 0) = TextBox1.Value
                .Range("c" & Rows.Count).End(xlUp).Offset(5, 0) = TextBox1.Value
        
End If
  
       
        Application.Goto reference:="ques1.2"
    End With
    End If
ขอบคุณ อาจารย์ครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 5:17 pm
by snasui
:D ในไฟล์แนบ Code เขียนไว้ที่ไหน ช่วยแจ้งรายละเอียดด้วยเพื่อเข้าถึงปัญหาโดยไวครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 5:50 pm
by porkub1
ขอโทษครับอาจารย์
ปัญหาจะอยู่ในชีท แบบสอบถามข้อ3 ครับ ผมแนบไฟล์ผิด ขอโทษด้วยครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 5:57 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub CommandButton2_Click()
    MsgBox ("กรุณากรอกขั้นตอนนี้ อีกครั้ง ขอบคุณ")
    ' clear the data
    Me.TextBox1.Value = ""
    ActiveSheet.OptionButtons("Option Button 9").Value = False
    ActiveSheet.OptionButtons("Option Button 10").Value = False
End Sub

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 9:18 pm
by porkub1
ได้แล้วครับ อาจารย์ ขอบคุณมากครับ

อาจารย์ครับ ทีนี้ ผมอยากบันทึกค่าในการติ๊ก option button โดยกำหนดให้

ถ้าติ๊ก Option Button 9= 1
Option Button 10 = 2
โดยบันทึกค่าที่กำหนดลงใน worksheet "บันทึกข้อมูล" ที่ a13 ครับ ไม่ทราบว่าจะเขียนโค้ดอย่างไรครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 9:52 pm
by snasui
:D ได้เขียนมาเองแล้วหรือไม่ ช่วยโพสต์หรือแจ้งมาด้วยว่าที่ปรับมาเองแล้วนั้นติดขัดตรงบรรทัดไหน หรือแสดงผลเป็นอย่างไร

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 10:23 pm
by porkub1
ลองไปได้ประมาณนี้ิะครับ

Code: Select all

Private Sub CommandButton1_Click()
  If TextBox1.Value = "" Then
 strvaluemsg = MsgBox("กรุณา", vbOKOnly + 64, "กรุณาอ่าน")
Else: strvaluemsg = MsgBox("¢éÍÁÙŢͧ·èÒ¹ä´éºÑ¹·Ö¡áÅéÇ  ¡ÅѺ仢éÍ·Õè 1.1")
Worksheets("บันทึกข้อมูล").Range("c9") = OptionButtons("Option Button 9").Value
Worksheets("บันทึกข้อมูล").Range("c10") = OptionButtons("Option Button 10").Value
Application.Goto reference:="r20c2"
End If
End Sub
งงว่าค่าที่เลือกจะเป็น 1 แต่ค่าที่ไม่ได้เลือก เป็น -4146 ครับ รบกวนอาจารย์ชี้แนะด้วยครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 10:39 pm
by snasui
:D จากคำถามนี้
porkub1 wrote:ผมอยากบันทึกค่าในการติ๊ก option button โดยกำหนดให้

ถ้าติ๊ก Option Button 9= 1
Option Button 10 = 2
โดยบันทึกค่าที่กำหนดลงใน worksheet "บันทึกข้อมูล" ที่ a13 ครับ ไม่ทราบว่าจะเขียนโค้ดอย่างไรครับ
ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

If OptionButtons("Option Button 9").Value = True Then
     Sheets("บันทึกข้อมูล").Range("a13") = 1
End If
If OptionButtons("Option Button 10").Value = True Then
     Sheets("บันทึกข้อมูล").Range("a13") = 2
End If

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 11:07 pm
by porkub1
อาจารย์ครับ ลอง run ดู ตัวเลขไม่มีใน ชีทที่กำหนดเลยครับ รบกวนอาจารย์ชี้แนะด้วยครับ ขอบคุณครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 11:22 pm
by snasui
:D แนบไฟล์พร้อม Code ที่ปรับปรุงล่าสุดมาดูกัน และให้ทำเช่นนี้เสมอ อย่าแจ้งมาเฉย ๆ เพราะไม่เห็นว่าได้นำไปใช้ตรงไหน ใช้ถูกต้องหรือไม่ครับ

Re: ปัญหาการจัดคำแบบสอบถามใน excel

Posted: Thu Feb 20, 2014 11:30 pm
by porkub1

Code: Select all

Private Sub CommandButton1_Click()
    If TextBox1.Value = "" Then
        strvaluemsg = MsgBox("อ่าน, vbOKOnly + 64, "อ่าน")
    Else: strvaluemsg = MsgBox("ไปข้อ 1.2")
      
End If
  If OptionButtons("Option Button 9").Value = True Then
     Sheets("บันทึกข้อมูล").Range("a13") = 1
End If
If OptionButtons("Option Button 10").Value = True Then
     Sheets("บันทึกข้อมูล").Range("a13") = 2
End If
       
        Application.Goto reference:="r18c3"
    
    
End Sub
run แล้วไม่มีตัวเลขเลยครับ ขอบคุณครับอาจารย์