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

Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#1

Post by ANUSARA »

ต้องการ Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel ที่ต้องการให้ผู้ใช้เลือกวิธีแบบที่ 1 แล้วจะใส่ค่าได้เฉพาะช่องของแบบที่ 1
และถ้าเลือกวิธีแบบที่ 2 จะใส่ค่าได้เฉพาะในช่องของแบบที่ 2 จะไปเลือกหรือใสข้อมูลในแบบที่ 1 ไม่ได้

แนบไฟล์ มาดูด้วยนะคะ
1. ต้องการให้ใส่ข้อมูลตามลำดับตั้งแต่ Name, Date
2. แล้วพอถึงข้อ 1 Method ให้เลือกว่าจะเอา Method 1 หรือ Method 2
3. ถ้าเลือก Method 1 จะสามารถคลิกเลือกเฉพาะที่ข้อ 1.1 เพื่อเลือกข้อมูลจาก method โดยคลิกที่ 1.2 Method 2 ไม่ได้ รวมถึง คลิกที่ 1.2.1 และ 1.2.2 ไม่ได้ด้วย หรือ ถ้าเลือก Method 2 จะคลิกที่ Method 1 ไม่ได้จะใส่ข้อมูลได้เฉพาะใน 1.2.1 , 1.2.2
4. ส่วนในข้อ 2-4 สามารถใส่ข้อมูลได้แม้จะเลือก Method 1 หรือ Method 2
Attachments
จำกัดการใส่ข้อมูล.xlsm
(19.88 KiB) Downloaded 53 times
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#2

Post by ANUSARA »

ต้องการ Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel ที่ต้องการให้ผู้ใช้เลือกวิธีแบบที่ 1 แล้วจะใส่ค่าได้เฉพาะช่องของแบบที่ 1
และถ้าเลือกวิธีแบบที่ 2 จะใส่ค่าได้เฉพาะในช่องของแบบที่ 2 จะไปเลือกหรือใสข้อมูลในแบบที่ 1 ไม่ได้

แนบไฟล์ มาดูด้วยนะคะ
1. ต้องการให้ใส่ข้อมูลตามลำดับตั้งแต่ Name, Date
2. แล้วพอถึงข้อ 1 Method ให้เลือกว่าจะเอา Method 1 หรือ Method 2
3. ถ้าเลือก Method 1 จะสามารถคลิกเลือกเฉพาะที่ข้อ 1.1 เพื่อเลือกข้อมูลจาก method โดยคลิกที่ 1.2 Method 2 ไม่ได้ รวมถึง คลิกที่ 1.2.1 และ 1.2.2 ไม่ได้ด้วย หรือ ถ้าเลือก Method 2 จะคลิกที่ Method 1 ไม่ได้จะใส่ข้อมูลได้เฉพาะใน 1.2.1 , 1.2.2
4. ส่วนในข้อ 2-4 สามารถใส่ข้อมูลได้แม้จะเลือก Method 1 หรือ Method 2
Attachments
Copy of จำกัดการใส่ข้อมูล2003.xls
(44.5 KiB) Downloaded 33 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#3

Post by snasui »

:D ลองดูการทำ Validation ด้วยการ Custom เพื่อใช้ Function ตรวจสอบเงื่อนไขตามไฟล์แนบครับ
Attachments
Ans_จำกัดการใส่ข้อมูล2003.xls
(39.5 KiB) Downloaded 53 times
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#4

Post by ANUSARA »

ถ้าต้องการให้ช่องนี้มีรายการให้เลือกตามสีของช่อง C5 ค่ะ
และกำหนดเหมือนเดิมคือจะคลิกเลือกรายการได้ต้องเลือก Method 1 จะต้องเพิ่มสูตรอย่างไรคะ
=OFFSET($O$6,1,MATCH($C$5,$P$6:$R$6,0),5,1)
สูตรนี้ได้ลองทำเพื่อให้มันมีรายการเลือกเพื่อเชื่อมจากการเลือกสีด้านบน ค่ะ
ต้องรวมนี้กับสูตร =IF(E8="Method 1",$M$10:$M$15) อย่างไรคะ
Attachments
Reply Ans_จำกัดการใส่ข้อมูล2003.xls
(48.5 KiB) Downloaded 20 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#5

Post by snasui »

ANUSARA wrote:ถ้าต้องการให้ช่องนี้มีรายการให้เลือกตามสีของช่อง C5 ค่ะ
และกำหนดเหมือนเดิมคือจะคลิกเลือกรายการได้ต้องเลือก Method 1 จะต้องเพิ่มสูตรอย่างไรคะ
=OFFSET($O$6,1,MATCH($C$5,$P$6:$R$6,0),5,1)
สูตรนี้ได้ลองทำเพื่อให้มันมีรายการเลือกเพื่อเชื่อมจากการเลือกสีด้านบน ค่ะ
ต้องรวมนี้กับสูตร =IF(E8="Method 1",$M$10:$M$15) อย่างไรคะ
:D ที่ Data > Validation เปลี่ยนสูตรเป็นด้านล่างแทนสูตรเดิมครับ

=IF(E8="Method 1",OFFSET($O$6,0,MATCH($C$5,$P$5:$R$5,0),4))
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#6

Post by ANUSARA »

ปัญหาคื่อ ถ้าเกิดผู้ใช้เลือก Method 1 แล้ว คลิกเลือกข้อมูลค้างไว้ แต่เปลี่ยนมาเลือก Method 2 ซึ่งเป็นแบบใส่ข้อมูล ดังนั้นข้อมูลในแบบ Method 1 ที่ถูกเลือกจากlist จะค้างอยู่
จึงอยากให้ถ้าเลือก Method 2 แล้วข้อมูลในMetod 1 จะแสดงตัวเลือกแรกคือ **Please select data**
และถ้าเลือก Method 1 ช่องที่ใส่ data ของ Method 2 อยากให้แสดงค่า 0
ต้องใส่สูตรเพิ่มอย่างไรคะ

รบกวนอีกครั้งค่ะ
ขอบคุณค่ะ
Attachments
Reply2 Ans_จำกัดการใส่ข้อมูล2003.xls
(50.5 KiB) Downloaded 19 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#7

Post by snasui »

ANUSARA wrote:ปัญหาคื่อ ถ้าเกิดผู้ใช้เลือก Method 1 แล้ว คลิกเลือกข้อมูลค้างไว้ แต่เปลี่ยนมาเลือก Method 2 ซึ่งเป็นแบบใส่ข้อมูล ดังนั้นข้อมูลในแบบ Method 1 ที่ถูกเลือกจากlist จะค้างอยู่
จึงอยากให้ถ้าเลือก Method 2 แล้วข้อมูลในMetod 1 จะแสดงตัวเลือกแรกคือ **Please select data**
และถ้าเลือก Method 1 ช่องที่ใส่ data ของ Method 2 อยากให้แสดงค่า 0
ต้องใส่สูตรเพิ่มอย่างไรคะ

รบกวนอีกครั้งค่ะ
ขอบคุณค่ะ
:D กรณีต้องการเช่นนี้ต้องใช้ VBA เข้ามาช่วยครับ เมื่อถามถึง VBA ผมถือว่าคุณ ANUSARA มีความคุ้นเคยกับ VBA อยู่แล้ว การวาง Code คงไม่มีปัญหา

ลองนำ Code ด้านล่างนี้ไปวางที่ Sheet1 ครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = "$E$8" Then
        If Target = "Method 1" Then
            Range("C11") = "**Please select data**"
            Range("F15:H19") = 0
        Else
            Range("C11") = "**Please select data**"
            Range("F15:H19").ClearContents
        End If
    End If
    Application.EnableEvents = True
End Sub
จากนั้นลองเปลี่ยน E8 แล้วสังเกตดูผล :mrgreen:
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#8

Post by ANUSARA »

ขอบคุณมากค่ะ ลองเอา code ไปวางแล้ว สามารถทำได้แล้วค่ะ
ขอสอบถามเพิ่มเติมนะคะ
ช่อง cell F15:F19 เป็นช่องที่เราให้ผู้ใช้เติมค่าที่เป็นตัวเลข
แต่เราได้กำหนดไปแล้วว่า ให้ใส่ค่าได้เมื่อเลือก เลือก Method 2
โดยกำหนดไว้ที่ Data validation > Allow:Custom> Formula: $E$8 = "Method2"
แต่ถ้าเราอยากจะกำหนดให้ช่องที่ใส่ข้อมูลนี้รับแต่ค่าที่เป็นตัวเลขอย่างเดียว
จะใส่ตัวอักษรไม่ได้ เนื่องจากจะไม่สามารถคำนวณได้ค่ะ
เราต้องตั้งค่าเพิ่มอย่างไรบ้างคะ

ถ้าจะเลือก Data validation > Allow: whole number > Data: greater than > Minimun :0
เพื่อให้ใส่ค่าที่มากกว่า 0 ได้ไหมคะ และจะเอาไปเพิ่มกับคำสั่งเดิมอย่างไรคะ

แนบไฟล์ด้านล่างค่ะ
Attachments
Reply2 Ans_จำกัดการใส่ข้อมูล2003 -Edit.xlsm
(23.1 KiB) Downloaded 46 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#9

Post by snasui »

:D ตัวอย่างการกำหนดให้กรอกได้เฉพาะตัวเลขและ E8 เป็น Method 2

ลองตามนี้ครับ


๑. คลุม F15:H19
๒. เข้าเมนู Data > Validation
๓. เปลี่ยนสูตรเดิมเป็นตามด้านล่าง

=AND($E$8="Method 2",ISNUMBER(F15))
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#10

Post by ANUSARA »

ขอบคุณมากค่ะ
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#11

Post by ANUSARA »

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$E$8" Then
If Target = "Method 1" Then
Range("C11") = "**Please select data**"
Range("F15:H19") = 0
Else
Range("C11") = "**Please select data**"
Range("F15:H19").ClearContents
End If
End If
Application.EnableEvents = True
End Sub

จาก ตรงบรรทัด Range("F15:H19") = 0 คือเซลล์มีหลายคอลัมน์ จะต้องไม่ merge cell ใช่ไหมคะ
แต่ถ้าในแต่ละแถวมี cell ที่มีหลาย column และถูก merge กันอยู่ จะต้องเขียน code อย่างไรคะ
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#12

Post by ANUSARA »

ต้องการกำหนด ให้เลือก Combo Box2 ได้เมื่อเลือก Method 2 และถ้าเลือก Method อื่นแล้ว Combo Box นี้จะถูกเลือกไม่ได้
และแสดงตัวเลือกเป็น Please click & select data ค้างไว้ค่ะ

และอยากกำหนดให้ เวลาใส่ค่า Custom จะต้องใส่ได้แต่ค่าตัวเลข จะต้องแก้ไขตรงไหนบ้างคะ
ขอบคุณค่ะ
Attachments
Reply4 Ans_จำกัดการใส่ข้อมูล.xlsm
(26.03 KiB) Downloaded 6 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#13

Post by snasui »

ANUSARA wrote:1. แต่ถ้าในแต่ละแถวมี cell ที่มีหลาย column และถูก merge กันอยู่ จะต้องเขียน code อย่างไรคะ
2. ต้องการกำหนด ให้เลือก Combo Box2 ได้เมื่อเลือก Method 2 และถ้าเลือก Method อื่นแล้ว Combo Box นี้จะถูกเลือกไม่ได้
และแสดงตัวเลือกเป็น Please click & select data ค้างไว้ค่ะ
ลองดู Code ด้านล่างครับ

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    Application.EnableEvents = False
    If Target.Address = "$E$8" Then
        If Target = "Method 1" Then
            Range("C11") = "**Please select data**"
            With ComboBox2
                .Text = "Please Click & Select Data"
                .ListFillRange = ""
                .ShowDropButtonWhen = fmShowDropButtonWhenNever
            End With
            For Each r In Range("F15:F19")
                If r.MergeCells Then
                    r = 0
                Else
                    r = 0
                End If
            Next r
        Else
            Range("C11") = "**Please select data**"
            With ComboBox2
                .ListFillRange = "M24:M28"
                .ShowDropButtonWhen = fmShowDropButtonWhenAlways
            End With
            For Each r In Range("F15:F19")
                If r.MergeCells Then
                    r = ""
                    Else
                    r.ClearContents
                End If
            Next r
        End If
    End If
  Application.EnableEvents = True
End Sub
และอยากกำหนดให้ เวลาใส่ค่า Custom จะต้องใส่ได้แต่ค่าตัวเลข จะต้องแก้ไขตรงไหนบ้างคะ
ขอบคุณค่ะ
ลองดูตัวอย่างการปรับ Code ด้านล่างครับ

Code: Select all

Private Sub ComboBox2_Change()
     If Range("xSourceEx") = "Custom" Then
            xsourceex = InputBox(Prompt:="Enter Custom Quality Please.", Title:="PLEASE ENTER CUSTOM QUALITY", Default:="")
            Range("xSourceEx") = xsourceex
            If Not IsNumeric(xsourceex) Then
                MsgBox "Please enter numeric."
                ComboBox2.Text = ""
                Exit Sub
            End If
            Range("xSourceEx").NumberFormat = "General "" (Custom)"""
    Else
'        Range("xSourceEx") = Range("xSourceEx")
        Range("xSourceEx").NumberFormat = "General"
    End If
End Sub
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#14

Post by ANUSARA »

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Application.EnableEvents = False
If Target.Address = "$E$8" Then
If Target = "Method 1" Then
Range("C11") = "**Please select data**"
With ComboBox2
.Text = "Please Click & Select Data"
.ListFillRange = ""
.ShowDropButtonWhen = fmShowDropButtonWhenNever
End With
For Each r In Range("F15:F19")
If r.MergeCells Then
r = 0
Else
r = 0
End If
Next r
Else
Range("C11") = "**Please select data**"
With ComboBox2
.ListFillRange = "M24:M28"
.ShowDropButtonWhen = fmShowDropButtonWhenAlways
End With
For Each r In Range("F15:F19")
If r.MergeCells Then
r = ""
Else
r.ClearContents
End If
Next r
End If
End If
Application.EnableEvents = True
End Sub

code นี้ได้ตามที่ต้องการค่ะ
แต่พอกด ตัวเลือก Method 1แล้ว combo box จะหายไปค่ะ แต่มันยังพิมพ์อะไรต่างๆ หรือลบคำว่า Please click & select data ออกไปได้ค่ะ
จะมีคำสั่ง lock ไว้ไม่ให้แก้ไขอะไรเพิ่มเติมได้มีไหมคะ
ลองใช้ Data vlidation แล้วกำหนดให้เซลล์นั้นขึ้นกับ Method 2 เหมือนกัยที่ทำกับ Cell ปกติดูแต่ก็ยังไม่ได้ค่ะ

รบกวนอีกครั้งนะคะ
Code อื่นที่แนะนำมาใช้ได้ตามที่ต้องการค่ะ
ขอบคุณค่ะ
Attachments
Reply5 Ans_จำกัดการใส่ข้อมูล.xlsm
(27.6 KiB) Downloaded 3 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#15

Post by snasui »

:D การ Disable Combo box ลองดู Code ตามด้านล่างครับ :mrgreen:

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    Application.EnableEvents = False
    If Target.Address = "$E$8" Then
        If Target = "Method 1" Then
            Range("C11") = "**Please select data**"
            With ComboBox2
                .Text = "Please Click & Select Data"
                .Enabled = False
            End With
            For Each r In Range("F15:F19")
                If r.MergeCells Then
                    r = 0
                Else
                    r = 0
                End If
            Next r
        Else
            Range("C11") = "**Please select data**"
            With ComboBox2
                .Enabled = True
                .ListFillRange = "M24:M28"
            End With
            For Each r In Range("F15:F19")
                If r.MergeCells Then
                    r = ""
                    Else
                    r.ClearContents
                End If
            Next r
        End If
    End If
  Application.EnableEvents = True
End Sub
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#16

Post by ANUSARA »

1 ลองเอา code มาวางแล้วค่ะ อย่างที่ต้องการคือเมื่อเลือก Method 1 แล้วcombobox 2 จะแก้ไขไม่ได้ค่ะ แต่เมื่อคลิกกลับมาเป็น Method 2 แล้ว combobox ไม่กลับมาให้เลือกรายการเหมือนเดิมได้ค่ะ

2 ถ้าเราให้ แสดงค่าจาก Combo box2 ที่ผู้ใช้เลือกไปแสดงผลใน Sheet2
แต่อยากให้แสดงค่าตามที่เลือกค่ะ เช่น 10, 20 , 50 หรืออื่นๆตามที่ผู้ใช้ใส่ค่ามา
แต่ถ้า Combo box นี้ไม่ถูกเลือก หรือถูกเลือกเป็น Please click & select data แล้ว
cell D5 ที่ Sheet2 ก็ให้แสดงค่าในช่องนั้นเป็นช่องว่างค่ะ

ขอบคุณค่ะ
Attachments
Reply6 Ans_จำกัดการใส่ข้อมูล.xlsm
(28.2 KiB) Downloaded 1 time
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#17

Post by snasui »

:D คุณ ANUSARA ลองปรับ Code เองมาให้ดูด้วยครับว่าได้พยายามปรับด้วยตัวเองแล้ว

ถ้าคุณเคยใช้ VBA ย่อมจะต้องปรับ Code มาได้บ้างครับ เพราะการเปลี่ยนแปลง Code ย่อมเกิดขึ้นได้ตลอดเวลาถ้าความต้องการเปลี่ยนแปลงไป :mrgreen:
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#18

Post by ANUSARA »

ลองแก้เป็นแบบนี้ สามารถแก้ไขได้แล้วค่ะ
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Application.EnableEvents = False
If Target.Address = "$E$8" Then
If Target = "Method 1" Then
Range("C11") = "**Please select data**"
Range("F15:F19") = 0
With ComboBox2
.Text = "Please Click & Select Data"
.ListFillRange = ""
.ShowDropButtonWhen = fmShowDropButtonWhenNever
.Enabled = False
End With

Else
Range("C11") = "**Please select data**"
Range("F15:F19").ClearContents
With ComboBox2
.Enabled = True
.ListFillRange = "M24:M28"
.ShowDropButtonWhen = fmShowDropButtonWhenAlways
End With

End If
End If
Application.EnableEvents = True
End Sub

แต่ปัญหาอันนี้ยังแก้ไม่ได้เลยค่ะ
# ถ้าเราให้ แสดงค่าจาก Combo box2 ที่ผู้ใช้เลือกไปแสดงผลใน Sheet2
แต่อยากให้แสดงค่าตามที่เลือกค่ะ เช่น 10, 20 , 50 หรืออื่นๆตามที่ผู้ใช้ใส่ค่ามา
แต่ถ้า Combo box นี้ไม่ถูกเลือก หรือถูกเลือกเป็น Please click & select data แล้ว
cell D5 ที่ Sheet2 ก็ให้แสดงค่าในช่องนั้นเป็นช่องว่างค่ะ
Attachments
Reply7 Ans_จำกัดการใส่ข้อมูล.xlsm
(28.25 KiB) Downloaded 1 time
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#19

Post by snasui »

จาก
ANUSARA wrote:1 ลองเอา code มาวางแล้วค่ะ อย่างที่ต้องการคือเมื่อเลือก Method 1 แล้วcombobox 2 จะแก้ไขไม่ได้ค่ะ แต่เมื่อคลิกกลับมาเป็น Method 2 แล้ว combobox ไม่กลับมาให้เลือกรายการเหมือนเดิมได้ค่ะ
...ขอบคุณค่ะ
:D ผมทดสอบแล้ว Code ที่ผมปรับไปให้ครั้งล่าสุดสามารถใช้ได้ไม่มีปัญหาครับ ทีุ่คุณปรับมาให้นั้นผมยังไม่ถือว่าปรับครับ อย่าเพิ่งเสียกำลังใจ :lol:

สำหรับ Code ที่ต้องการให้ปรับมาก็คือตรงนี้ครับ
ANUSARA wrote:....2 ถ้าเราให้ แสดงค่าจาก Combo box2 ที่ผู้ใช้เลือกไปแสดงผลใน Sheet2
แต่อยากให้แสดงค่าตามที่เลือกค่ะ เช่น 10, 20 , 50 หรืออื่นๆตามที่ผู้ใช้ใส่ค่ามา
แต่ถ้า Combo box นี้ไม่ถูกเลือก หรือถูกเลือกเป็น Please click & select data แล้ว
cell D5 ที่ Sheet2 ก็ให้แสดงค่าในช่องนั้นเป็นช่องว่างค่ะ
ตัวอย่าง Code เพื่อบันทึกค่าใน Combobox2 ไปยัง D5 ของ Sheet2 ตามด้านล่างครับ

Code: Select all

Private Sub ComboBox2_Change()
     If Range("xSourceEx") = "Custom" Then
            xsourceex = InputBox(Prompt:="Enter Custom Quality Please.", Title:="PLEASE ENTER CUSTOM QUALITY", Default:="")
            Range("xSourceEx") = xsourceex
            If Not IsNumeric(xsourceex) Then
                MsgBox "Please enter numeric."
                ComboBox2.Text = ""
                Exit Sub
            End If
            Range("xSourceEx").NumberFormat = "General "" (Custom)"""
    Else
'        Range("xSourceEx") = Range("xSourceEx")
        Range("xSourceEx").NumberFormat = "General"
    End If
    If IsNumeric(ComboBox2.Text) Then
        Worksheets("Sheet2").Range("D5") = ComboBox2.Text
    Else
        Worksheets("Sheet2").Range("D5") = ""
    End If
End Sub
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

Re: Code VBA ที่กำหนดให้ผู้ใช้ใส่ข้อมูลบน Excel

#20

Post by ANUSARA »

1. ถ้าเปลี่ยนข้อมูลที่เลือกเป็นตัวหนังสือทั้งหมดไม่ใช่ตัวเลขแล้วต้องปรับ code อย่างไรคะ

เราให้ แสดงค่าจาก Combo box2 ที่ผู้ใช้เลือกไปแสดงผลใน Sheet2
แต่อยากให้แสดงค่าตามที่เลือกค่ะ เช่น closure,label, bottom หรืออื่นๆตามที่ผู้ใช้ใส่ค่ามา
แต่ถ้า Combo box นี้ไม่ถูกเลือก หรือถูกเลือกเป็น Please click & select data แล้ว
cell D5 ที่ Sheet2 ก็ให้แสดงค่าในช่องนั้นเป็นช่องว่างค่ะ

2. ตรง Msg ที่เคยขึ้นมาตอนพิมพ์ตัวอักษรแล้ว ขึ้นมาเตือนให้ใส่แต่ตัวเลข
แต่จะเปลี่ยนเป็นขึ้นมาเตือนให้ใส่เฉพาะตัวอักษร ไม่ให้ใส่ตัวเลข

ทั้ง 2 อย่างนี้ต้องปรับ code อย่างไรคะ
ลองเปลี่ยนจาก Numeric เป็น text ยังไม่ได้ค่ะ

ขอบคุณค่ะ
Attachments
Reply8 Ans_จำกัดการใส่ข้อมูล.xlsm
(29.76 KiB) Downloaded 19 times
Post Reply