: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

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
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 จะต้องใส่ได้แต่ค่าตัวเลข จะต้องแก้ไขตรงไหนบ้างคะ
ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
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 อื่นที่แนะนำมาใช้ได้ตามที่ต้องการค่ะ
ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
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 ก็ให้แสดงค่าในช่องนั้นเป็นช่องว่างค่ะ

ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
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 ก็ให้แสดงค่าในช่องนั้นเป็นช่องว่างค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
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 ยังไม่ได้ค่ะ

ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#21

Post by snasui »

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

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

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

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

ขอบคุณค่ะ
:D ขอตัวอย่าง Code ที่ลองปรับแล้วทุกข้อที่กล่าวมาด้วยครับ :mrgreen:
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

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

#22

Post by ANUSARA »

ลองเปลี่ยนจากที่เป็น Numeric เป็น Text ค่ะ ไม่ทราบว่าทำได้ไหมคะถ้าต้องการให้เป็นตัวอักษร

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 IsText(xsourceex) Then
MsgBox "Please enter text."
ComboBox2.Text = ""
Exit Sub
End If
Range("xSourceEx").NumberFormat = "General "" (Custom)"""
Else

' Range("xSourceEx") = Range("xSourceEx")
Range("xSourceEx").NumberFormat = "General"
End If

If IsText(ComboBox2.Text) Then
Worksheets("Sheet2").Range("D5") = ComboBox2.Text
Else
Worksheets("Sheet2").Range("D5") = ""
End If

End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#23

Post by snasui »

:D จริง ๆ ที่ปรับมานั้นเกือบใช้ได้แล้วครับ ตรง If Not IsText.. สามารถเขียนเป็น If Not Application.Istext... ได้

ดูตัวอย่างการปรับ Code ตามด้านล่างครับ :mrgreen:

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 IsNumeric(xsourceex) Then
                MsgBox "Please enter text."
                ComboBox2.Text = "Please click & select data"
                Exit Sub
            End If
            Range("xSourceEx").NumberFormat = "General "" (Custom)"""
    Else
    
'        Range("xSourceEx") = Range("xSourceEx")
        Range("xSourceEx").NumberFormat = "General"
    End If
    
    If Not IsNumeric(ComboBox2.Text) And ComboBox2.Text <> "Please click & select data" 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

#24

Post by ANUSARA »

ขอรบกวนอีกครั้งนะคะ จากที่เคยถามเรื่อง การให้แสดงค่า 0 ใน sheet2 เมื่อเลือก Please click & select data จาก sheet1 ค่ะ
แล้ว คุณSnasui ได้ให้ code ตามด้านล่างมาแล้ว ลองไปทำตามดู ผลที่ไ้คือ Range D5 ใน sheet2 มันกลายเป็นช่องว่างตลอดเลยไม่ว่าจะเลือกค่าใดจาก combobox2 ค่ะ ไม่ทราบว่าต้องปรับแก้ code อย่างไรคะ

ขอบคุณค่ะ

คำถามเก่าที่เคยถามค่ะ
ถ้าเราให้ แสดงค่าจาก 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
Last edited by snasui on Sun Jan 09, 2011 4:04 pm, edited 1 time in total.
Reason: แสดงเป็น Code แบบเยื้องเพื่อให้ง่ายต่อการอ่าน
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#25

Post by snasui »

:D Code ที่ส่งมาไม่ใช่ Code ล่าสุดที่ผมเขียนให้ไปครับ ในส่วนของการตรวจสอบผมจะเขียนเป็น

Code: Select all

If Not IsNumeric(ComboBox2.Text) And ComboBox2.Text <> "Please click & select data" Then
ดูความเห็นก่อนหน้าความเห็นของคุณ :roll: หากยังไม่ได้ลองส่งไฟล์ที่ได้ Update Code ที่ให้ไปล่าสุดมาให้ดูหน่อยครับ
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

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

#26

Post by ANUSARA »

ไฟล์ที่แนบมาเป็นอันที่ลองทำตาม code ที่ให้มาแล้วค่ะ
แต่พอคลิกเลือกให้เป็น Please click & Select data แล้ว ช่อง cell B2 ใน sheet2 ก็แสดงเป็นช่องว่างแล้วค่ะ แต่พอคลิกเลือก ให้เป็น 21 ค่าที่แสดงในช่อง cell B2 ใน sheet2 กลับไม่แสดงค่าด้วยค่ะ
แต่ถ้าใส่ค่าเองที่ custom ค่าจะไปแสดงที่ช่อง cell B2 ใน sheet2 ได้ค่ะ

ไม่ทราบว่าต้องแก้ code อย่างไรให้พอเลือกค่า 21 แล้วแสดงค่าที่ sheet2 ด้วยคะ

ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#27

Post by snasui »

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

Code: Select all

If IsNumeric(Val(ComboBox1.Text)) Then
       Worksheets("Sheet2").Range("xResult1") = ComboBox1.Text
   Else
      Worksheets("Sheet2").Range("xResult1") = ""
End If
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

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

#28

Post by ANUSARA »

ลองแก้ code แล้วค่ะ
ที่ต้องการคือเมื่อเลือก Please click & Select data แล้ว cell B2 ใน Sheet2 กลายเป็นช่องว่างค่ะ
แต่ถ้าเลือกตัวเลือกอื่น ทั้งเลือกค่า 21 หรือใส่ค่าเองจาก custom จะแสดงค่าใน sheet2 ตามค่าที่เลือกค่ะ

code ที่ได้ปรับแก้นั้น ยังทำให้แสดงค่าเมื่อเลืือก Please click & Select data อยู่ค่ะ
ไม่ทราบว่าแก้ตรงไหนผิดค่ะ

รบกวนอีกครั้งนะคะ
ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31176
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

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

#29

Post by snasui »

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

Code: Select all

If ComboBox1.Text <> "<--Please click & Select data-->" Then
       Worksheets("Sheet2").Range("xResult1") = ComboBox1.Text
   Else
      Worksheets("Sheet2").Range("xResult1") = ""
End If
หมายถึงค่า ComboBox1 ไม่เป็นค่า <--Please click & Select data--> แล้วให้ชีท 2 เซลล์ B2 เป็นค่านั้น ไม่เช่นนั้่นให้เป็นค่าว่าง
ANUSARA
Member
Member
Posts: 69
Joined: Wed Oct 06, 2010 11:12 pm

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

#30

Post by ANUSARA »

รบกวนช่วยดูไฟล์ที่แนบมานี้ค่ะ
ลองทำตาม code ที่ให้มาแล้วค่ะ ไม่ทราบว่าผิดตรงไหนค่ะ
แต่เมื่อเลือก Please click & Select data ค่ายังไปแสดงที่ Sheet2 อยู่ค่ะ อยากให้ไม่แสดงค่าค่ะ
แต่ถ้าเลือกอย่างอื่นก็ให่แสดงค่าค่ะ

ขอบคุณนะคะ
You do not have the required permissions to view the files attached to this post.
Post Reply