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

สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA ครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#28

by snasui » Thu Apr 10, 2014 11:12 pm

:D ต้องขออภัยเรื่องสถานที่เรียน ผมไม่สามารถบอกได้เนื่องจากผมศึกษาด้วยตนเอง รอสมาชิกท่านอื่นเข้ามาช่วยตอบครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#27

by narin_han » Thu Apr 10, 2014 10:58 pm

:thup: :cp: :cp: :cp: :cp:
ขอบคุณมากนะครับอาจารย์ งานของผมเสร็จเรียบร้อยได้เลยเพราะบอร์ดนี้

ถ้าผมอยากเรียนเพิ่มเติม สามารถเรียนได้ที่ไหนบ้างครับ ขอบพระคุณนะครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#26

by snasui » Thu Apr 10, 2014 10:48 pm

:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

For Each ws In Sheets
    For Each r In ws.Range("a2", ws.Range("a" & Rows.Count).End(xlUp))
        If r <> "" Then r.Value = Val(r.Value)
    Next r
Next ws

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#25

by narin_han » Thu Apr 10, 2014 10:36 pm

ใช่แล้วครับ อาจารย์ และขอบคุณสำหรับคำแนะนำนะครับ
ผมลองใช้ code นี้นะครับ

Code: Select all

Sub ConvertAllShts()
For Each WS In Sheets
For Each r In WS.UsedRange
If r <> "" Then r.Value = Val(r.Value)
Next
Next
End Sub
โดยสร้างใน module นะครับ พอ test แล้วเปลี่ยนทุก column นะครับ ถ้าอยากได้แค่ column ("A") ทำยังไงครับ ขอบคุณครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#24

by snasui » Thu Apr 10, 2014 10:30 pm

:D ถ้าหากไฟล์ของคุณมีแค่ 3 ปี Code ที่ผมตอบไปนั้นสามารถให้คำตอบที่ถูกต้องอยู่แล้ว ไม่จำเป็นต้องเขียน range2016 เข้าไปเพิ่มแต่อย่างใด ยกเว้นจะมีปี 2017 เป็นปีสุดท้าย
narin_han wrote:เนื่องจากในช่อง Employee ID ตอนที่กรอกไปพอออกมาเป็นในรูปแบบ number แต่ออกมาเป็น text ครับ มี alphobet คั่นข้างหน้าครับ
อ่านแล้วไม่เข้าใจครับ หมายถึงว่ากรอกเป็น Number แต่ผลลัพธ์ออกมาเป็น Text สิ่งที่ต้องการคือ ต้องการให้ออกมาเป็น Number ใช่หรือไม่ครับ :?:

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#23

by narin_han » Thu Apr 10, 2014 10:27 pm

bank9597 wrote::D ลองดูตามไฟล์แนบครับ
:thup: :thup: :thup: :cp: :cp: :cp: :cp:
ขอบคุณอีกครั้งครับ คุณbank9597
เยี่ยมเช่นเดียวกันครับ ขอบคุณนะครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#22

by narin_han » Thu Apr 10, 2014 10:18 pm

อาจารย์ครับ ขอถามอีกหนึ่งคำถามนะครับ
เนื่องจากในช่อง Employee ID ตอนที่กรอกไปพอออกมาเป็นในรูปแบบ number แต่ออกมาเป็น text ครับ มี alphobet คั่นข้างหน้าครับ
เพราะไฟล์ใช้งานจริงๆ จะมีปุ่มเรียกข้อมูลออกมาดูด้วยนะครับ (เขียนเรียบร้อยแล้ว ไม่มีปัญหาครับ) เลยกลัวว่าจะมีปัญหานะครับ มีคำสั่งไหมครับที่ต่อท้ายไปแล้วปรับมาเป็นตัวเลขครับ ขอบคุณอีกครั้งครับ อาจารย์

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#20

by narin_han » Thu Apr 10, 2014 10:13 pm

snasui wrote:
narin_han wrote:แล้วสำหรับของปี 2016 นะครับ ผมสามารถใช้สูตรแบบนี้ได้หรือไม่ครับ (ยังไม่ได้ test นะครับ)
:shock: ควรจะ Test ก่อน เมื่อ Test แล้วติดปัญหาใดค่อยถามกันต่อครับ
คืออยากขอบคุณอาจารย์ก่อนะครับ ผมลองทดสอบแล้วนะครับ ใช้ได้ผลดีเยี่ยมเลยครับ :cp: :cp: :cp:

ผมปรับสูตรจนครบแล้วนะครับ เพื่อนๆในบอร์ดสามารถนำไปใช้ประยุกต์ใช้ได้นะครับ ตามนี้เลยครับ

ปล.ผมขอขอบคุณ คุณ bank อีกคนด้วยนะครับ ไว้ผมทำงานเสร็จแล้ว จะมาช่วยตอบคำถามให้ในบอร์ดนะครับ

Code: Select all

Private Sub TextBox1_Change()
        Worksheets("temp").Range("A2") = Me.TextBox1
End Sub

Private Sub TextBox2_Change()
        Worksheets("temp").Range("B2") = Me.TextBox2
End Sub

Private Sub TextBox3_Change()
        Worksheets("temp").Range("C2") = Me.TextBox3
End Sub
Private Sub ComboBox19_Change()
        Worksheets("temp").Range("D2") = Me.ComboBox19
End Sub

Private Sub ComboBox1_Change()
        Worksheets("temp").Range("E2") = Me.ComboBox1
End Sub

Private Sub ComboBox2_Change()
        Worksheets("temp").Range("F2") = Me.ComboBox2
End Sub

Private Sub ComboBox3_Change()
        Worksheets("temp").Range("G2") = Me.ComboBox3
End Sub

Private Sub ComboBox5_Change()
        Worksheets("temp").Range("H2") = Me.ComboBox5
End Sub
Private Sub ComboBox6_Change()
        Worksheets("temp").Range("I2") = Me.ComboBox6
End Sub
Private Sub ComboBox8_Change()
        Worksheets("temp").Range("J2") = Me.ComboBox8
End Sub
Private Sub ComboBox9_Change()
        Worksheets("temp").Range("K2") = Me.ComboBox9
End Sub
Private Sub ComboBox10_Change()
        Worksheets("temp").Range("L2") = Me.ComboBox10
End Sub
Private Sub ComboBox11_Change()
        Worksheets("temp").Range("M2") = Me.ComboBox11
End Sub
Private Sub ComboBox7_Change()
        Worksheets("temp").Range("N2") = Me.ComboBox7
End Sub
Private Sub ComboBox14_Change()
        Worksheets("temp").Range("O2") = Me.ComboBox14
End Sub
Private Sub ComboBox15_Change()
        Worksheets("temp").Range("P2") = Me.ComboBox15
End Sub
Private Sub ComboBox16_Change()
        Worksheets("temp").Range("Q2") = Me.ComboBox16
End Sub
Private Sub ComboBox17_Change()
        Worksheets("temp").Range("R2") = Me.ComboBox17
End Sub
Private Sub ComboBox13_Change()
        Worksheets("temp").Range("S2") = Me.ComboBox13
End Sub

Private Sub CommandButton1_Click()
    Dim range2014 As Range
    Dim range2015 As Range
    Dim range2016 As Range
    Dim r As Range
    With Sheets("temp")
        Set range2014 = .Range("E2:I2")
        Set range2015 = .Range("J2:N2")
        Set range2016 = .Range("O2:S2")
        For Each r In range2014
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        For Each r In range2015
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        For Each r In range2016
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        .Range("A2:S2").Resize(1, 19).Copy
        Sheets("Sheet1").Range("A" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        MsgBox ("Already Saved")
        .Range("A2:S2").ClearContents
    End With
End Sub
Attachments
EX.Training แบบลงข้อมูลแล้วแสดงผลตามเงื่อนไข_1.xlsm
(34.68 KiB) Downloaded 18 times

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#19

by snasui » Thu Apr 10, 2014 9:52 pm

narin_han wrote:แล้วสำหรับของปี 2016 นะครับ ผมสามารถใช้สูตรแบบนี้ได้หรือไม่ครับ (ยังไม่ได้ test นะครับ)
:shock: ควรจะ Test ก่อน เมื่อ Test แล้วติดปัญหาใดค่อยถามกันต่อครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#18

by narin_han » Thu Apr 10, 2014 9:45 pm

ก่อนอื่นขอขอบคุณอาจารย์ก่อนนะครับ :thup: :cp:

แล้วสำหรับของปี 2016 นะครับ ผมสามารถใช้สูตรแบบนี้ได้หรือไม่ครับ (ยังไม่ได้ test นะครับ)

Code: Select all

Private Sub CommandButton1_Click()
    Dim range2014 As Range
    Dim range2015 As Range
    Dim range2016 As Range
    Dim r As Range
    With Sheets("temp")
        Set range2014 = .Range("E2:I2")
        Set range2015 = .Range("J2:N2")
        Set range2016 = .Range("O2:S2")
        For Each r In range2014
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        For Each r In range2015
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        For Each r In range2016
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        .Range("A2:S2").Resize(1, 19).Copy
        Sheets("Sheet1").Range("A" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        MsgBox ("Already Saved")
        .Range("A2:S2").ClearContents
    End With
End Sub

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#17

by snasui » Thu Apr 10, 2014 9:34 pm

:D ลองปรับ Code ที่ CommandButton1 เป็นด้านล่างครับ

Code: Select all

Private Sub CommandButton1_Click()
    Dim range2014 As Range
    Dim range2015 As Range
    Dim r As Range
    With Sheets("temp")
        Set range2014 = .Range("e2:i2")
        Set range2015 = .Range("j2:n2")
        For Each r In range2014
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        For Each r In range2015
            If r = "Done" Then r.Offset(0, 5) = r
        Next r
        .Range("A2:S2").Resize(1, 19).Copy
        Sheets("Sheet1").Range("A" & Rows.Count) _
            .End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
        MsgBox ("Already Saved")
        .Range("A2:S2").ClearContents
    End With
End Sub

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#16

by narin_han » Thu Apr 10, 2014 6:51 pm

bank9597 wrote:
narin_han wrote:คุณ bank9597 ครับ
เพิ่มเติมครับ ทีแรกผมคิดว่าผม copy code มาผิด
เลยไปดูจากไฟล์เก่าที่คุณ bank9597 คิดไว้ให้เมื่อคืน
ปรากฎว่า พอ เลือก done ในช่อง course 1 ปี 2014 ปรากฏว่า Done ในปี 2015 course 1 ก็ไม่แสดงออกมาครับ
แต่เมื่อคืนก่อนนอนผม test ได้แล้ว ยังงงๆอยู่ครับ
:D ผมยังไม่ได้เห็นไฟล์แนบครับ

เมื่อคืนที่ตอบไป ยังไม่รัดกุมครับ เนื่องจากเงื่อนไขยังไม่ชัดเจน

ถ้าเปิดฟอร์มขึ้นมาแล้ว เรากรอกช่วง ปี 15 ก่อนปี 14 จะให้ข้อมูลแสดงอย่างไร นี่แค่ส่วนหนึ่ง ถ้าจะให้รัดกุมจริงๆ จะต้องเขียนกันเยอะเลยครับ
แนบมาให้แล้วนะครับ :D :D

คือเงื่อนไขนั้น ใช้ได้เลยนะครับ เพราะเบื้องต้นต้องการเท่านี้ก่อนครับ (เพราะได้ตกลงกับคนที่ไปทำต่อแล้วนะครับว่า กรอกตามปีนะครับ)
คือยังไม่ต้องถึงระดับที่ต้องสั่งคำสั่งว่า ถ้ากรอก 2015 แล้วจะเด้งเตือนนะครับ
คือข้อมูล 2014 จะเป็นตามจริงครับ ส่วน 2 ปีหลัง คือ ตามการวางแผนครับ เพื่อใช้ในการกำหนดงบประมาณต่อไป
ที่เน้นจริงๆคือ Done นะครับ
เช่น course 1-5 2014 done แล้ว course 1-5 2015 done ตาม แล้ว course 1-5 2016 done ตาม นะครับ ถ้าเงื่อนไขไม่ใช่ตามนี้ก็ตาม combobox ที่เลือกไปครับ ผมดูที่ทางคุณ bank9597 ทำมาใช้ได้ครับ แต่พอลอง test done ในช่อง ปี 2015 และ 2016 ไม่ขึ้นนะครับ

ขอบคุณอีกครั้งครับ
Attachments
EX.Training แบบลงข้อมูลแล้วแสดงผลตามเงื่อนไข_1.xlsm
(36.7 KiB) Downloaded 3 times

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#15

by bank9597 » Thu Apr 10, 2014 6:36 pm

narin_han wrote:คุณ bank9597 ครับ
เพิ่มเติมครับ ทีแรกผมคิดว่าผม copy code มาผิด
เลยไปดูจากไฟล์เก่าที่คุณ bank9597 คิดไว้ให้เมื่อคืน
ปรากฎว่า พอ เลือก done ในช่อง course 1 ปี 2014 ปรากฏว่า Done ในปี 2015 course 1 ก็ไม่แสดงออกมาครับ
แต่เมื่อคืนก่อนนอนผม test ได้แล้ว ยังงงๆอยู่ครับ
:D ผมยังไม่ได้เห็นไฟล์แนบครับ

เมื่อคืนที่ตอบไป ยังไม่รัดกุมครับ เนื่องจากเงื่อนไขยังไม่ชัดเจน

ถ้าเปิดฟอร์มขึ้นมาแล้ว เรากรอกช่วง ปี 15 ก่อนปี 14 จะให้ข้อมูลแสดงอย่างไร นี่แค่ส่วนหนึ่ง ถ้าจะให้รัดกุมจริงๆ จะต้องเขียนกันเยอะเลยครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#14

by narin_han » Thu Apr 10, 2014 6:26 pm

ฝากขอถามถึงอาจารย์ด้วยนะครับ
ขอบคุณครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#13

by narin_han » Thu Apr 10, 2014 5:31 pm

คุณ bank9597 ครับ
เพิ่มเติมครับ ทีแรกผมคิดว่าผม copy code มาผิด
เลยไปดูจากไฟล์เก่าที่คุณ bank9597 คิดไว้ให้เมื่อคืน
ปรากฎว่า พอ เลือก done ในช่อง course 1 ปี 2014 ปรากฏว่า Done ในปี 2015 course 1 ก็ไม่แสดงออกมาครับ
แต่เมื่อคืนก่อนนอนผม test ได้แล้ว ยังงงๆอยู่ครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#12

by narin_han » Thu Apr 10, 2014 5:11 pm

ผมแนบมาแล้วครับ คุณ bank9597

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#11

by bank9597 » Thu Apr 10, 2014 5:07 pm

:D ลองแนบไฟล์มาดูด้วยครับ

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#10

by narin_han » Thu Apr 10, 2014 4:19 pm

bank9597 wrote:
ปล.อยากสอบถามเพิ่มนะครับว่า ต้องตั้งชื่อ sheet temp ไว้ทำไมนะครับ
รู้สึกว่าเหมือนให้ส่งค่าไปที่ sheet temp ก่อนแล้วค่อยไป paste ที่ sheet1 ใช่ไหมครับ?
:D ใช่แล้วครับ เป็นการจัดรับระเบียบข้อมูลก่อนการบันทึกครับ โดยใช้ชีท temp เป็นตัวรับค่าจากการคีย์บน userform มาจัดเรียงก่อน เพื่อให้ง่ายต่อการเขียนโค๊ดไปวางยังชีทเป้าหมายครับ

ที่ผมเขียนโคีดการกำหนดเงื่อนไขด้วย if ไปให้นั้น ยังไม่รัดกุมครับ ยังไงต้องลองปรับดูน่ะครับ
ขอบคุณอีกครั้งครับ แต่เกิดปัญหาอีกแล้วครับ ตาม code ที่ผมเขียนเต็มๆแล้วนะครับ

Code: Select all


Private Sub ComboBox8_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("E2") = "Done" Then
            ws.Range("J2") = "Done"
        Else
            ws.Range("J2") = Me.ComboBox8
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox9_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("F2") = "Done" Then
            ws.Range("K2") = "Done"
        Else
            ws.Range("K2") = Me.ComboBox9
        End If
        Set ws = Nothing
End Sub

Private Sub ComboBox10_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("G2") = "Done" Then
            ws.Range("L2") = "Done"
        Else
            ws.Range("L2") = Me.ComboBox10
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox11_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("H2") = "Done" Then
            ws.Range("M2") = "Done"
        Else
            ws.Range("M2") = Me.ComboBox11
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox7_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("I2") = "Done" Then
            ws.Range("N2") = "Done"
        Else
            ws.Range("N2") = Me.ComboBox7
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox14_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("J2") = "Done" Then
            ws.Range("O2") = "Done"
        Else
            ws.Range("O2") = Me.ComboBox14
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox15_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("K2") = "Done" Then
            ws.Range("P2") = "Done"
        Else
            ws.Range("P2") = Me.ComboBox15
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox16_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("L2") = "Done" Then
            ws.Range("Q2") = "Done"
        Else
            ws.Range("Q2") = Me.ComboBox16
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox17_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("M2") = "Done" Then
            ws.Range("R2") = "Done"
        Else
            ws.Range("R2") = Me.ComboBox17
        End If
        Set ws = Nothing
End Sub
Private Sub ComboBox13_Change()
        Dim ws As Worksheet
        Set ws = Worksheets("temp")
        If ws.Range("N2") = "Done" Then
            ws.Range("S2") = "Done"
        Else
            ws.Range("S2") = Me.ComboBox13
        End If
        Set ws = Nothing
End Sub
เกิดปัญหาตั้งแต่ ComboBox8 นะครับหลังจากเขียนครบทุก ComboBox
ปรากฏว่า Done ในปีอื่นๆไม่ลงข้อมูลตามให้ครับ แต่อย่างอื่นได้หมดแล้ว :cry: :cry:

โดยผมตั้ง Logic แบบนี้คือ

ถ้า ComboBox1 (ตำแหน่ง E2) ในปี 2014 = Done แล้ว Then ComboBox8 (ตำแหน่ง J2) = Done ด้วย

แล้วไปสร้างในปี 2016 ต่อนะครับ ว่า ComboBox8 (ตำแหน่ง J2) ในปี 2015 = Done แล้ว Then ComboBox14 (ตำแหน่ง O2) = Done ด้วย (ที่สร้างเงื่อนไขแบบนี้ เพราะเผื่อในปี 2015 ด้วยนะครับว่ามี Done แต่ปี 2014 ไม่ต้องมีก็ได้ครับ)

ตามไฟล์แนบ บันทัดล่างสุดครับ Done ไม่เปลี่ยนครับ ฝากดูให้หน่อยนะครับ ว่าต้องแก้คำสั่ง If Then ยังไงครับ ขอบคุณครับ
Attachments
EX.Training แบบลงข้อมูลแล้วแสดงผลตามเงื่อนไข_1.xlsm
(33.76 KiB) Downloaded 4 times

Re: สอบถามเรื่องการลงข้อมูล แบบกำหนดเงื่อนไข ในแบบฟอร์ม VBA

#9

by bank9597 » Thu Apr 10, 2014 12:44 am

ปล.อยากสอบถามเพิ่มนะครับว่า ต้องตั้งชื่อ sheet temp ไว้ทำไมนะครับ
รู้สึกว่าเหมือนให้ส่งค่าไปที่ sheet temp ก่อนแล้วค่อยไป paste ที่ sheet1 ใช่ไหมครับ?
:D ใช่แล้วครับ เป็นการจัดรับระเบียบข้อมูลก่อนการบันทึกครับ โดยใช้ชีท temp เป็นตัวรับค่าจากการคีย์บน userform มาจัดเรียงก่อน เพื่อให้ง่ายต่อการเขียนโค๊ดไปวางยังชีทเป้าหมายครับ

ที่ผมเขียนโคีดการกำหนดเงื่อนไขด้วย if ไปให้นั้น ยังไม่รัดกุมครับ ยังไงต้องลองปรับดูน่ะครับ

Top