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
ควรกลับไปแจ้งผลในกระทู้นั้นด้วยตามกฎข้อ 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
ผมนำกระทู้มารวมกันให้แล้ว เนื่องจากเป็นงานเดิม และเป็นการถามต่อจากกระทู้เดิม
สิ่งที่ต้องการคือแก้ไขแล้วบันทึกกลับไปที่เดิมใช่หรือไม่ครับ 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
หากถามว่าแก้ตรงไหนก็ต้องแก้ทั้งชุดครับ สำหรับการแก้ไขข้อมูลเราสามารถทำได้หลายแบบครับ เช่น เขียน Code สำหรับตรวจสอบข้อมูลว่าข้อมูลที่แก้อยู่ในบรรทัดใด ก็ให้นำข้อมูลที่แก้แล้วไปวางทีบรรทัดนั้น หรือ Loop เพื่อนำข้อมูลที่แก้แล้วไปวางทีเดิม
กรณีต้องการหาค่าบรรทัดสามารถใช้
Application.Match(...)
เข้ามาช่วยได้ครับ
Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm
Posted: Sun Mar 09, 2014 5:05 pm
by snasui
ตัวอย่าง 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
ใน 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
อาการผิดที่ว่านั้นเป็นอย่างไรครับ ถ้าไม่ผิดคำตอบควรเป็นอย่างไร ช่วยอธิบายมาด้วยเสมอครับ
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
สาเหตุเนื่องจาก 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
ที่กล่าวมาเรียกว่า Control ครับ
Re: ป้องกันการกรอกข้อมูลซ้ำ UserForm
Posted: Tue Jun 24, 2014 8:29 pm
by witayait
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
ค่าในคอลัมน์ 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 ครับ