Page 2 of 3

Re: ทำ userForm แก้ไขข้อมูล

Posted: Sat Mar 08, 2014 9:18 am
by san02551
ส่วนหน้านั้นทำได้แล้วครับ เป็นเรื่องการตรวจสอบ หรือดักข้อมูลที่กรอกลงในฟอร์ม ครับ
ที่ผมตั้งกระทู้ใหม่ เพราะเป็นเรื่องการ ดึงข้อมูลมาแก้ไข ครับ เพราะว่าท่านอื่นค้นหา อาจจะง่ายขึ้นบ้าง ครับ
อย่างไง ต้องขอโทษด้วย ครับ

Re: ทำ userForm แก้ไขข้อมูล

Posted: Sat Mar 08, 2014 9:22 am
by snasui
:D ควรกลับไปแจ้งผลในกระทู้นั้นด้วยตามกฎข้อ 6 ด้านบนครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Sat Mar 08, 2014 9:24 am
by san02551
ส่วนหน้านั้นทำได้แล้วครับ เป็นเรื่องการตรวจสอบ หรือดักข้อมูลที่กรอกลงในฟอร์ม ครับ
ผมแนบไฟล์มาด้วย

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Sat Mar 08, 2014 9:42 am
by snasui
:D ผมนำกระทู้มารวมกันให้แล้ว เนื่องจากเป็นงานเดิม และเป็นการถามต่อจากกระทู้เดิม

สิ่งที่ต้องการคือแก้ไขแล้วบันทึกกลับไปที่เดิมใช่หรือไม่ครับ Code ที่เขียนมานั้นเป็นการบันทึกต่อท้ายข้อมูลที่มีอยู่เดิมครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Sun Mar 09, 2014 4:21 pm
by san02551
ถ้าหากเราต้องการแก้ไขข้อมูลเดิมแล้วบันทึก ข้อมูลที่แก้ไข ต้องปรับโค้ดส่วนใดบ้างครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Sun Mar 09, 2014 4:31 pm
by snasui
:D หากถามว่าแก้ตรงไหนก็ต้องแก้ทั้งชุดครับ สำหรับการแก้ไขข้อมูลเราสามารถทำได้หลายแบบครับ เช่น เขียน Code สำหรับตรวจสอบข้อมูลว่าข้อมูลที่แก้อยู่ในบรรทัดใด ก็ให้นำข้อมูลที่แก้แล้วไปวางทีบรรทัดนั้น หรือ Loop เพื่อนำข้อมูลที่แก้แล้วไปวางทีเดิม

กรณีต้องการหาค่าบรรทัดสามารถใช้ Application.Match(...) เข้ามาช่วยได้ครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Sun Mar 09, 2014 5:05 pm
by snasui
:D ตัวอย่าง Code ด้านล่างเป็นการ Loop เพื่อแก้ไขข้อมูลครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim rAll As Range, r As Range
    With Sheets("Data")
        Set rAll = .Range("a2", .Range("a" & Rows.Count).End(xlUp))
        For Each r In rAll
            If CStr(r) = ComboBox1.Text Then
                r.Offset(0, 1) = TextBox1.Text
                r.Offset(0, 2) = TextBox2.Text
                Exit For
            End If
        Next r
    End With
    Unload Me
End Sub

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Mon Mar 10, 2014 10:56 pm
by san02551
เรียน อาจารย์ที่เคารพ
ถ้าหากผมต้องการดึงข้อมูล จาก Data โดย ที่ a2:a6 เป็นตัวอักษร ด้วย CmboBox1 และให้ข้อมูลแสดงที่ TextBox1 , TextBox2 ตามลำดับ ท่านช่วยแนะนำด้วยว่าควรปรับโค้ด ตรงไหนบ้าง
มีไฟล์แนบครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Tue Mar 11, 2014 8:17 am
by snasui
:D ใน ComboBox มีการกำหนด RowSource เอาไว้แล้วก็ถือว่าใช้ได้แล้วครับ ถ้าจะทำต่อจากนั้นก็กำหนดให้ RowSource มีขนาดเท่าที่จำเป็นไม่ใช่เป็นค่าคงที่เหมือนที่กำหนดไว้เดิม

สำหรับการนำค่าอื่น ๆ มาแสดงใน TextBox โดยดูจาก ComboBox สามารถใช้ Vlookup เข้ามาช่วยหรือ Loop เข้ามาช่วยได้ครับ สำหรับการ Loop ก็ดูตัวอย่างจากโพสต์ด้านบนครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Wed Mar 12, 2014 10:37 pm
by san02551
เรียนท่านอาารย์ที่เคารพ
จากที่ผมทดลองจากไฟล์ที่แนบ และโค้ด ไม่รู้โค้ดผิดตรงไหน ท่านช่วยปรัให้ด้วย ผมทดลองมาหลายครั้งแล้ว ยังหาไม่เจอเลยครับ

Code: Select all

Private Sub CommandButton1_Click()
      Dim rAll As Range, r As Range
    With Sheets("Data2")
        Set rAll = .Range("a3", .Range("a" & Rows.Count).End(xlUp))
        For Each r In rAll
            If CStr(r) = ComboBox1.Text Then
               r.Offset(0, 1) = TextBox1.Text
                r.Offset(0, 2) = TextBox2.Text
                r.Offset(0, 3) = TextBox3.Text
                r.Offset(0, 4) = TextBox4.Text
                r.Offset(0, 5) = TextBox5.Text
                r.Offset(0, 6) = TextBox6.Text
                r.Offset(0, 7) = TextBox7.Text
                r.Offset(0, 8) = TextBox8.Text
                r.Offset(0, 9) = TextBox9.Text
                r.Offset(0, 10) = TextBox10.Text
                r.Offset(0, 11) = TextBox11.Text
                r.Offset(0, 12) = TextBox12.Text
                r.Offset(0, 13) = TextBox13.Text
                r.Offset(0, 14) = TextBox14.Text
                r.Offset(0, 15) = TextBox15.Text
                r.Offset(0, 16) = TextBox16.Text
                r.Offset(0, 17) = TextBox17.Text
                r.Offset(0, 18) = TextBox18.Text
                r.Offset(0, 19) = TextBox19.Text
                r.Offset(0, 20) = TextBox20.Text
                r.Offset(0, 21) = TextBox21.Text
                r.Offset(0, 22) = TextBox22.Text
                r.Offset(0, 23) = TextBox23.Text
                r.Offset(0, 24) = TextBox24.Text
                r.Offset(0, 25) = TextBox25.Text
                r.Offset(0, 26) = TextBox26.Text
                r.Offset(0, 27) = TextBox27.Text
                r.Offset(0, 28) = TextBox28.Text
                r.Offset(0, 29) = TextBox29.Text
                r.Offset(0, 30) = TextBox30.Text
                r.Offset(0, 31) = TextBox31.Text
                r.Offset(0, 32) = TextBox32.Text
                r.Offset(0, 33) = TextBox33.Text
                r.Offset(0, 34) = TextBox34.Text
                r.Offset(0, 35) = TextBox35.Text
                r.Offset(0, 36) = TextBox36.Text
                r.Offset(0, 37) = TextBox37.Text
                r.Offset(0, 38) = TextBox38.Text
                r.Offset(0, 39) = TextBox39.Text
                              Exit For
            End If
        Next r
    End With
    Unload Me
End Sub

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Wed Mar 12, 2014 10:58 pm
by snasui
:D อาการผิดที่ว่านั้นเป็นอย่างไรครับ ถ้าไม่ผิดคำตอบควรเป็นอย่างไร ช่วยอธิบายมาด้วยเสมอครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Thu Mar 13, 2014 10:08 am
by san02551
UserForm7 ลองดึงข้อมูลมาแก้ไขข้อมูลแล้ว ไม่สามารถบันทึกข้อมูลที่เรียกมาแก้ไขได้ จะขึ้น Rum-time error '424' Ofject required
คลิกที่ปุ่ม Debug จะขึ้นแถบสีเหลืองที่ r.Offset(0,1)=TextBox1.Text ครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Thu Mar 13, 2014 10:47 am
by snasui
:D สาเหตุเนื่องจาก UserForm7 ไม่มี TextBox1 จึงไม่สามารถนำค่าจาก TextBox1 ไปใส่ให้ Range ใด ๆ ใด้ครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Thu Mar 13, 2014 11:01 am
by san02551
ทำได้แล้วครับ และผมเข้าใจว่า ต้องมี เครื่องมือได้ไหมครับ พวก TextBox ,ComboBox (เรียกว่าเครื่องมือได้ไหมครับ) จึงส่งค่าไปบันทึกได้

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Thu Mar 13, 2014 11:04 am
by snasui
:D ที่กล่าวมาเรียกว่า Control ครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Tue Jun 24, 2014 8:29 pm
by witayait
:thup:

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Thu Oct 23, 2014 3:31 pm
by san02551
userform_edit.xlsm
เรียนอาจารย์ ที่เคารพ
จาก ไฟล์ที่ผม แนบมาครับ การเรียกข้อมูลด้วย Combo
1.ถ้าผมเรียนข้อมูล 1/2557 จะไม่มีข้อมูลแสดงที่ textbox
2. ถ้าผมเรียกข้อมูล 2 จะแสดงข้อมูลขึ้นมา ครับ ผมแนบไฟล์ พร้อมโค้ด น่าจะปรับตรงไหน ครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Thu Oct 23, 2014 3:37 pm
by snasui
:D ค่าในคอลัมน์ A ควรเป็นข้อมูลประเภทเดียวกัน ไม่ใช่เป็น Text บ้าง Number บ้าง

ในกรณีนี้ให้ปรับเป็น Text โดยคลุมคอลัมน์ A > เข้าเมนู Data > Text to columns > Next > Next > Text > Finish

จากนั้นเข้าไปปรับใน Code ลบ Clng ทิ้งไปแล้วทดสอบดูใหม่

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Thu Oct 23, 2014 4:13 pm
by san02551
ขอคุณ ครับ

Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm

Posted: Sun Nov 02, 2014 3:05 pm
by san02551
เรียนอาารย์ ที่เคารพ
ผมขอเรียนถาม ว่า
๑. ผมสร้าง Userform1 ขึ้นมา เพื่อดึงข้อมูลจาก sheets : All มาแก้ไข ตามไฟล์แนบครับ
๒. ผมลองเขียนโค้ดแล้ว ไม่รู้ว่าจะแก้ไขอย่างไร ครับ
๓. จ้อมูลที่ดึงมาใส่ที่ UserForm 1 ต้องการแก้ไขลงที่ Sheets :All ครับ