Page 2 of 2

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

Posted: Mon Oct 18, 2010 10:44 pm
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:

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

Posted: Mon Oct 18, 2010 11:37 pm
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

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

Posted: Tue Oct 19, 2010 5:43 pm
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

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

Posted: Sun Jan 09, 2011 9:22 am
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

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

Posted: Sun Jan 09, 2011 4:08 pm
by snasui
:D Code ที่ส่งมาไม่ใช่ Code ล่าสุดที่ผมเขียนให้ไปครับ ในส่วนของการตรวจสอบผมจะเขียนเป็น

Code: Select all

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

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

Posted: Mon Jan 10, 2011 6:20 pm
by ANUSARA
ไฟล์ที่แนบมาเป็นอันที่ลองทำตาม code ที่ให้มาแล้วค่ะ
แต่พอคลิกเลือกให้เป็น Please click & Select data แล้ว ช่อง cell B2 ใน sheet2 ก็แสดงเป็นช่องว่างแล้วค่ะ แต่พอคลิกเลือก ให้เป็น 21 ค่าที่แสดงในช่อง cell B2 ใน sheet2 กลับไม่แสดงค่าด้วยค่ะ
แต่ถ้าใส่ค่าเองที่ custom ค่าจะไปแสดงที่ช่อง cell B2 ใน sheet2 ได้ค่ะ

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

ขอบคุณค่ะ

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

Posted: Mon Jan 10, 2011 6:43 pm
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

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

Posted: Tue Jan 11, 2011 12:43 am
by ANUSARA
ลองแก้ code แล้วค่ะ
ที่ต้องการคือเมื่อเลือก Please click & Select data แล้ว cell B2 ใน Sheet2 กลายเป็นช่องว่างค่ะ
แต่ถ้าเลือกตัวเลือกอื่น ทั้งเลือกค่า 21 หรือใส่ค่าเองจาก custom จะแสดงค่าใน sheet2 ตามค่าที่เลือกค่ะ

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

รบกวนอีกครั้งนะคะ
ขอบคุณค่ะ

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

Posted: Tue Jan 11, 2011 7:40 am
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 เป็นค่านั้น ไม่เช่นนั้่นให้เป็นค่าว่าง

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

Posted: Wed Jan 12, 2011 7:25 pm
by ANUSARA
รบกวนช่วยดูไฟล์ที่แนบมานี้ค่ะ
ลองทำตาม code ที่ให้มาแล้วค่ะ ไม่ทราบว่าผิดตรงไหนค่ะ
แต่เมื่อเลือก Please click & Select data ค่ายังไปแสดงที่ Sheet2 อยู่ค่ะ อยากให้ไม่แสดงค่าค่ะ
แต่ถ้าเลือกอย่างอื่นก็ให่แสดงค่าค่ะ

ขอบคุณนะคะ

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

Posted: Wed Jan 12, 2011 7:38 pm
by snasui
:D ตัวอักษรใหญ่เล็กมีผลต่อการแสดงผลครับ ดูการเปรียบเทียบตามด้านล่าง
12-1-2554 19-34-08.png

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

Posted: Fri Jan 28, 2011 11:40 am
by ANUSARA
จากที่เคยได้รับคำแนะนำเรื่องของการกำหนดข้อมุลที่จะแสดงเฉพาะบางค่าค่ะ
หากต้องการเพิ่มตัวเลือกที่ผู้ใช้เลือก แล้วไม่แสดงค่าด้วย

คือจากเดิมที่เคยกำหนดว่าถ้าเลือกเป็น <--Please click & Select data--> แล้วไม่ต้องแสดงค่าที่หน้า Sheet2
โดยเพิ่มตัวเลือก Not Calculate ให้ไม่ต้องแสดงค่าด้วยค่ะ

ได้เพิ่ม code ดังด้านล่างค่ะ

Private Sub ComboBox1_Change()

If ComboBox1.Text <> "<--Please click & Select data-->" Then
Worksheets("Sheet2").Range("xResult1") = ComboBox1.Text
Else
Worksheets("Sheet2").Range("xResult1") = ""
End If

If ComboBox1.Text <> "Not Calculate" Then
Worksheets("Sheet2").Range("xResult1") = ComboBox1.Text
Else
Worksheets("Sheet2").Range("xResult1") = ""
End If
End Sub

แต่ผลที่ได้คือเมื่อเลือก<--Please click & Select data--> แล้ว หน้า Sheet2 ก็ยังแสดงค่า <--Please click & Select data--> ค่ะ
แค่ถ้าเลือก Not Calculate แล้วจะไม่แสดงค่าที่หน้า sheet2 ค่ะ

อยากรบกวนว่าต้องปรับ code อย่างไรคะ

ขอบคุณค่ะ
อนุสรา

ได้แนบไฟล์ตัวอยา่างด้านล่างค่ะ

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

Posted: Fri Jan 28, 2011 4:30 pm
by snasui
:D ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Private Sub ComboBox1_Change()
If ComboBox1.Text <> "<--Please click & Select data-->" _
   Or ComboBox1.Text <> "Not Calculate" Then
Worksheets("Sheet2").Range("xResult1") = ComboBox1.Text
Else
Worksheets("Sheet2").Range("xResult1") = ""
End If
End Sub

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

Posted: Fri Jan 28, 2011 9:21 pm
by ANUSARA
ลอง copy code ไปวางแล้วแต่ยังไม่ได้ค่ะ ขึ้น error ค่ะ
ไม่ทราบว่าผิดตรงไหนคะ
แนบไฟล์ที่ลองทำด้านล่างค่ะ

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

Posted: Fri Jan 28, 2011 9:37 pm
by snasui
:lol: คุณ Protect Sheet ไว้ ดังนั้นการขึ้น Error ก็เป็นสิ่งที่ถูกต้องแล้วครับ :mrgreen:

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

Posted: Sat Jan 29, 2011 4:52 pm
by ANUSARA
unprotect sheet2 แล้วค่ะแต่ยังไม่ได้ค่ะ

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

ขอบคุณค่ะ

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

Posted: Sat Jan 29, 2011 5:19 pm
by snasui
:tt: ปรับที่เดิมครับ เปลี่ยนจาก Or เป็น And ตามด้านล่างครับ :mrgreen:

Code: Select all

If ComboBox1.Text <> "<--Please click & Select data-->" _
    And ComboBox1.Text <> "Not Calculate" Then
   
    Worksheets("Sheet2").Range("xResult1") = ComboBox1.Text

    Else
    Worksheets("Sheet2").Range("xResult1") = ""
    End If

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

Posted: Tue Feb 01, 2011 12:32 am
by ANUSARA
หากต้องการ กำหนดให้ค่า Custom ที่เราให้ผู้ใช้ใส่ค่าที่ต้องการเอง แต่เราต้องการให้ใส่ค่าได้ไม่เกิน 100
ต้องปรับ code ตรง custom อย่างไรคะ

If Range("xExample1") = "Custom" Then
xExample1 = InputBox(Prompt:="Enter Custom Value Please.", Title:="PLEASE ENTER CUSTOM VALUE", Default:="")
Range("xExample1") = xExample1

If Not IsNumeric(xExample1) Then
MsgBox "Please enter numeric."
ComboBox1.Text = "<--Please click & Select data-->"
Exit Sub
End If
Range("xExample1").NumberFormat = "General "" (Custom)"""
Else

Range("xExample1").NumberFormat = "General"
End If

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

Posted: Tue Feb 01, 2011 6:40 pm
by snasui
:D ลองดู Code ตามด้านล่างครับ

Code: Select all

   If Range("xExample1") = "Custom" Then
            xExample1 = InputBox(Prompt:="Enter Custom Value Please.", Title:="PLEASE ENTER CUSTOM VALUE", Default:="")
            Range("xExample1") = xExample1
        Select Case xExample1
                Case Not IsNumeric(xExample1)
                    MsgBox "Please enter numeric."
                    ComboBox1.Text = "<--Please click & Select data-->"
                    Exit Sub
                Case Is > 100
                    MsgBox "The value must be less than or equal to 100."
                    ComboBox1.Text = "<--Please click & Select data-->"
                    Exit Sub
        End Select
            Range("xExample1").NumberFormat = "General "" (Custom)"""
    Else
             Range("xExample1").NumberFormat = "General"
End If

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

Posted: Tue Feb 15, 2011 7:26 pm
by ANUSARA
ได้ผลตามที่ต้องการค่ะ

ขอบคุณนะคะ

(ขอโทษค่ะที่แจ้งผลช้า)