: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
🪷 คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ

ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Aoonne
Member
Member
Posts: 17
Joined: Tue Jan 04, 2022 9:17 pm
Excel Ver: 2007

ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#1

Post by Aoonne »

ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form ค่ะ

ตอนนี้สร้างฟอร์มสำหรับให้ user กรอกข้อมูล user แต่ละคน จะมีข้อมูลไม่ครบทุก cell ในฟอร์มนั้น

เลยอยากจะให้ cell ใดก็ตาม ที่ user ไม่ได้กรอกข้อมูล ให้ค่าใน cell นั้นเป็น 0.00 หลังกดปุ่ม เพิ่มข้อมูล ค่ะ

แล้วค่า 0.00 นั้น จะไป insert ในตารางที่กำหนด ทำให้ตารางจะไม่มี cell ใดที่เป็นค่าว่างค่ะ

เขียนโค้ดไว้แบบนี้ค่ะ

Private Sub CommandButton1_Click()

Do

r = r + 1

Loop Until Cells(r, 1) = ""

Cells(r, 1) = ComboBox2.Text

Cells(r, 2) = ComboBox1.Text

Cells(r, 3) = TextBox1.Value

Cells(r, 4) = TextBox2.Value

Cells(r, 5) = TextBox3.Value

Cells(r, 6) = TextBox4.Value

Cells(r, 7) = TextBox5.Value

Cells(r, 8) = TextBox6.Value

Cells(r, 9) = TextBox7.Value

Cells(r, 11) = TextBox8.Value

Cells(r, 12) = TextBox9.Value

Cells(r, 13) = TextBox10.Value

Cells(r, 14) = TextBox11.Value

Cells(r, 15) = TextBox12.Value

Cells(r, 16) = TextBox13.Value

Cells(r, 17) = TextBox14.Value

Cells(r, 18) = TextBox15.Value

Cells(r, 19) = TextBox16.Value

Cells(r, 20) = TextBox17.Value

Cells(r, 21) = TextBox18.Value

Cells(r, 22) = TextBox19.Value

ComboBox1.Text = ""

ComboBox2.Text = ""

TextBox1.Value = ""

TextBox2.Value = ""

TextBox3.Value = ""

TextBox4.Value = ""

TextBox5.Value = ""

TextBox6.Value = ""

TextBox7.Value = ""

TextBox8.Value = ""

TextBox9.Value = ""

TextBox10.Value = ""

TextBox11.Value = ""

TextBox12.Value = ""

TextBox13.Value = ""

TextBox14.Value = ""

TextBox15.Value = ""

TextBox16.Value = ""

TextBox17.Value = ""

TextBox18.Value = ""

TextBox19.Value = ""

End Sub

Private Sub CommandButton2_Click()

ComboBox1.Text = ""

ComboBox2.Text = ""

TextBox1.Value = ""

TextBox2.Value = ""

TextBox3.Value = ""

TextBox4.Value = ""

TextBox5.Value = ""

TextBox6.Value = ""

TextBox7.Value = ""

TextBox8.Value = ""

TextBox9.Value = ""

TextBox10.Value = ""

TextBox11.Value = ""

TextBox12.Value = ""

TextBox13.Value = ""

TextBox14.Value = ""

TextBox15.Value = ""

TextBox16.Value = ""

TextBox17.Value = ""

TextBox18.Value = ""

TextBox19.Value = ""

End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#2

Post by snasui »

:D กรุณาวาง Code ให้เป็นรูปแบบ Code ดูตัวอย่างในกฎการใช้บอร์ดข้อ 5 ด้านบน :roll: นอกจากนี้ ช่วยแนบไฟล์ตัวอย่างมาด้วย จะได้สะดวกในการตอบของเพื่อนสมาชิกครับ
Aoonne
Member
Member
Posts: 17
Joined: Tue Jan 04, 2022 9:17 pm
Excel Ver: 2007

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#3

Post by Aoonne »

ขอโทษด้วยค่ะ ที่ไม่ได้ทำตามกฎ

ส่วนนั้นทำได้แล้ว มีคำถามในส่วนอื่นค่ะ
อ้างอิงข้อมูลโดยใช้สูตร INDEX แล้วดึงค่าได้เฉพาะคนที่ชื่ออยู่ในแถวแรกค่ะ

แนบไฟล์ตัวอย่างมาให้แล้วค่ะ
ที่ sheet TemplateUser cell I10 ไม่สามารถเปลี่ยนชื่อเป็นคนอื่นได้เลยค่ะ ค่าจะเป็น #ref
ค่าที่ I10 เป็นได้แค่ชื่อเดียวชื่อ นางรัตน์ เรืองมณี ถึงจะดึงค่ามาได้
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#4

Post by snasui »

:D ตัวอย่างสูตรในเซลล์ C14 ครับ

=SUMIFS(tbldata[เงินเดือน],tbldata[เดือน],$I$9,tbldata[ชื่อ - นามสกุล],$I$10)

งานลักษณะนี้ควรเลือกใช้สูตรหายอดรวมโดยมีเงื่อนไขเช่น Sumproduct, Sumifs การใช้ Index และ Match ตามรูปแบบที่เขียนมานั้น ลักษณะข้อมูลจะต้องเป็นเช่น ข้อมูลเดือนอยู่ในแนวตั้ง (คอลัมน์) แต่ข้อมูลชื่ออยู่ในแนวนอน (บรรทัด) ไม่ใช่แนวตั้งทั้งคู่ครับ
Aoonne
Member
Member
Posts: 17
Joined: Tue Jan 04, 2022 9:17 pm
Excel Ver: 2007

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#5

Post by Aoonne »

ขอบคุณมากค่ะอาจารย์ ทำได้แล้วค่ะ
ตอนนี้พยายามเรียนรู้ด้วยตัวเองไปทีละอย่าง
ถ้ามีอะไรติดขัดแล้วหาข้อมูลแก้ไขเองไม่ถูกก็จะมาถามอาจารย์ที่นี่
ขอบคุณอาจารย์นะคะที่แนะนำ
เริ่มรู้สึกสนุกแล้ว ยิ่งทำได้ไปทีละอย่างยิ่งสนุกเลยค่ะ :D
ไว้มีปัญหาอะไรต่อจากนี้ ขอรบกวนอีกนะคะ
Aoonne
Member
Member
Posts: 17
Joined: Tue Jan 04, 2022 9:17 pm
Excel Ver: 2007

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#6

Post by Aoonne »

รบกวนอีกหนึ่งข้อสงสัยค่ะ

อยากจะให้มีหนึ่งชีต เพื่อให้ผู้บริหารเรียกดูข้อมูลเงินเดือน เฉพาะเดือนที่ต้องการ
โดยสร้างเป็นชีตชื่อว่า Retrieve ไว้ มี drop down list เป็นเดือนกับปีให้เลือก
แล้วสร้างหัวตารางทิ้งไว้ สมมติว่าผู้บริหารต้องการเรียกดูข้อมูลของเดือนใด ให้เลือก drop down list
แล้วข้อมูลของเดือนนั้น ของพนักงานทุกคน จะมาแสดงในตารางด้านล่าง
โดยข้อมูลจะดึงมาจากข้อมูลใน tableData ที่อยู่อีกชีตนึง ที่ชื่อ Data ค่ะ
กรณีแบบนี้ควรใช้วิธีใดดีคะ เนื่องจากไม่อยากให้ผู้บริหารไป filter ในชีต Data ค่ะ
เลยเลือกใช้วิธีเพิ่มอีกชีตให้เข้าใช้งานดีกว่า
You do not have the required permissions to view the files attached to this post.
User avatar
logic
Gold
Gold
Posts: 1511
Joined: Thu Mar 18, 2010 1:57 pm
Excel Ver: 365

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#7

Post by logic »

ลองแบบนี้ดูครับ

Y4 =IFERROR(SMALL(IF(Data!$B$3:$B$29=$B$1,ROW(Data!$B$3:$B$29)),ROWS(Y$4:Y4)),"") เป็นสูตรอาร์เรย์ เขียนเสร็จแล้วอย่ากด enter อย่างเดียว ต้องกด ctrl ค้างไว้ตามด้วย shift+enter เสร็จแล้วคัดลอกสูตรลง เอาไว้แสดงค่าบรรทัดที่เข้าเงื่อนไข

A4 =IF($Y4="","",INDEX(Data!A:A,$Y4)) enter คัดลอกลงด้านล่าง เอาไว้ดึงข้อมูลตามค่าบรรทัดในคอลัมน์ Y ถ้าคัดลอกไปใช้ที่อื่นเปลี่ยนที่ Data!A:A ในสูตร
Aoonne
Member
Member
Posts: 17
Joined: Tue Jan 04, 2022 9:17 pm
Excel Ver: 2007

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#8

Post by Aoonne »

ลองทำตามที่คุณ logic แนะนำ ทำได้แล้วค่ะ

ทีนี้ลองคิดใหม่ทำใหม่ โดยแยก ปี กับ เดือน ในชีต data อยู่คนละ column กัน

ในคำสั่งนี้

Y4 =IFERROR(SMALL(IF(Data!$B$3:$B$29=$B$1,ROW(Data!$B$3:$B$29)),ROWS(Y$4:Y4)),"")

ในชีต retrieve ก็เพิ่ม drop down list ให้เลือก เดือน กับ ปี แยกกัน

ถ้าจะเพิ่มให้เช็ค drop down list B2 (ปี) ด้วย แทนที่จากเดิม เช็คแค่ B1 (เดือน) อย่างเดียว ต้องเพิ่มสูตรยังไงคะ
You do not have the required permissions to view the files attached to this post.
Aoonne
Member
Member
Posts: 17
Joined: Tue Jan 04, 2022 9:17 pm
Excel Ver: 2007

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#9

Post by Aoonne »

ลองแก้ไขสูตรดู โดยเพิ่มเงื่อนไขให้เช็คเป็นสองเงื่อนไข คือ B1 (เดือน) และ B2 (ปี)

ํY5=IFERROR(SMALL(IF(AND(tbldata[เดือน]=Retrieve!B1,tbldata[ปี]=Retrieve!B2),ROW(Data!$B$3:$B$29)),ROWS(Y$5:Y5)),"")

ค่าจำนวนบรรทัดที่นับมาได้เป็น 0 ไม่ทราบว่าใส่เงื่อนไขผิดตรงไหนคะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#10

Post by snasui »

:D ตัวอย่างการปรับสูตรครับ
Y4

=IFERROR(SMALL(IF(tbldata[เดือน]=$B$1,IF(tbldata[ปี]=$B$2,ROW(tbldata[เดือน])-MIN(ROW(tbldata[เดือน]))+1)),ROWS(Y$5:Y5)),"")

Ctrl+Shift+Enter > Copy ลงด้านล่าง

A4

=IF($Y5="","",INDEX(tbldata[ชื่อ - นามสกุล],$Y5))
Aoonne
Member
Member
Posts: 17
Joined: Tue Jan 04, 2022 9:17 pm
Excel Ver: 2007

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#11

Post by Aoonne »

เรียบร้อยแล้วค่ะอาจารย์ ขอบคุณมากค่ะ

ขอสอบถามเพิ่มเติมอีกกรณีนะคะ ยิ่งทำยิ่งมีข้อสงสัยเยอะ :D

ถ้าเรามีตาราง 2 ตาราง คือ tblEmployee กับ tblComboBox รายละเอียดในตารางเหมือนกัน 1 column

อยากจะให้เมื่อเพิ่มข้อมูล column "ชื่อ" ใน tblEmployee ข้อมูลชื่อนามสกุลที่เพิ่มใน table นี้ ก็จะไปเพิ่มใน Column "รายชื่อ" ใน

tblComboBox อัตโนมัติ แบบนี้จะสามารถทำได้มั้ยคะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31177
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: ขอสอบถาม กรณี ไม่ได้กรอกข้อมูล TextBox ใน form

#12

Post by snasui »

:D สามารถทำได้ครับ

ตัวอย่างการ Link เซลล์ ที่ชีต ComboBox
  1. คลิกขวาที่เซลล์ A2 > Format Cells > ที่แถบ Number เลือก General > OK
  2. ที่เซลล์ A2 คีย์สูตร
    =Employee!B3&""
    Enter > Copy ลงด้านล่าง โดยเผื่อไว้เท่าที่คิดว่าข้อมูลจะขยายไปถึง
Post Reply