Page 1 of 1

ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Mon Apr 25, 2011 12:03 pm
by axiomy
จากไฟล์ที่แนบมา ได้ใส่ code ลงไปที่ sheet "Issue log" เรียบร้อยแล้วค่ะอาจารย์ code ที่ใส่เป็น code ที่ทำให้ทุก cell ที่มี dropdown list สามารถเลือกได้หลายค่า แต่ requirement คือต้องการให้แค่ Column "Process name" เพียง Col เดียวที่สามารถเลือกได้หลายค่า ส่วน Col อื่นๆต้องการให้เลือกได้เพียงค่าเดียวค่ะอาจารย์ อีกปัญหาหนึ่งก็คือไม่สามารถใช้ Space bar เพื่อลบข้อความใน cell ที่เป็น dropdownlist ได้อะค่ะไม่ทราบว่าพอมีวิธีแก้ไขอย่างไรบ้างคะอาจารย์

ขอบคุณค่ะ :D

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Mon Apr 25, 2011 12:29 pm
by snasui
ไม่เข้าใจครับ

Code ที่เขียนมาไม่ได้มี Code ไหนที่สร้าง Validation และเท่าที่ดู Validation ได้สร้างไว้ด้วยวิธีปกติที่ไม่ต้องใช้ Code จะสร้างให้มีตัวเลือกกี่ตัวเลือกก็ย่อมทำได้อยู่แล้วครับ

ส่วน Space bar ไม่ได้เป็นค่า Blank ดังนั้นการเคาะ Space bar เป็นการกรอกอักขระอย่างหนึ่ง หากไม่มีอยู่ใน List และได้กำหนดให้ Validation ไม่ยอมรับค่าที่ไม่อยู่ใน List ก็จะไม่สามารถกรอกได้ครับ

การทำให้ Validation ยอมรับค่าใด ๆ ให้เข้าไปที่ Data > Validation > แถบ Error alert ให้ปลดเครื่องหมายที่ Show error alert after invalid data is entered.

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Mon Apr 25, 2011 4:55 pm
by axiomy
ขอโทษอาจารย์ค่ะ คือหนูอธิบายงงเอง สิ่งที่เป็นปัญหาตอนนี้คือ cell ที่หนูทำไว้เป็น dropdown list มันจะสามารถเลือกได้หลายค่าเช่น Col "priority"จะเลือก H แล้วก็เลือก M ได้อีก ซึ่งปกติแล้ว dropdown list จะเลือกได้เพียงแค่ค่าเดียวอะค่ะ หนูต้องการให้ col อื่นๆที่ไม่ใช่ priority เลือกได้ค่าเดียวเหมือน dropdown list ปกติ ส่วน col "process name" สามารถเลือกได้หลายค่าค่ะ ส่วนที่หนูบอกว่า space bar คือหนูเขียนผิดค่ะอาจารย์ หนูจะหมายถึง backspace อะค่ะ พอหนูใส่ code นี้ลงไปใน sheet แล้วมันไม่สามารถใช้ backspace ลบข้อความได้ปกติค่ะ ต้องใช้ปุ่ม delete ลบแทน

รบกวนอาจารย์ช่วยดูให้หน่อยนะคะ
ขอบคุณค่ะ

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Mon Apr 25, 2011 5:19 pm
by snasui
เพิ่ม Code ข้างล่างนี้เข้าไปช่วยตรวจสอบครับว่าตอนนี้ทำงานกับ Column ไหน หากเป็นคอลัมน์อื่นที่ไม่ใช่ Process name ก็ไม่ต้อง Run Event

Code: Select all

If Target.Column <> 10 Then Exit Sub
ซึ่งสามารถวางไว้หลังการประกาศตัวแปร ได้เป็น

Code: Select all

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String, newVal As String
Dim tr As Long
If Target.Column <> 10 Then Exit Sub
'Other Code
End Sub
ส่วนเรื่อง Backspace ที่เครื่องผมสามารถใช้ลบค่าในเซลลใด ๆ ของไฟล์นี้ได้ตามปกติครับ

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Tue Apr 26, 2011 9:53 am
by axiomy
:D ขอบคุณอาจารย์มากๆเลยค่ะ ไม่เคยรู้เลยว่า excel ทำอะไรได้เยอะแยะขนาดนี้ จนมาเจออาจารย์นี่แหละค่ะ ทำให้หนูรัก excel ขึ้นเยอะเลย อาจารย์คะ คือหนูอยากศึกษา excel ให้มากกว่านี้ ไม่ทราบว่าอาจารย์มีตำราไหนดีๆแนะนำบ้างคะ

ps หนูเจออยู่อีกปัญหาหนึ่งอะค่ะคือหลังจากที่หนูใช้ backspace ลบข้อความใน cell (ใน col "Process name")แล้วกด enter ข้อความใน cell มันเพิ่มขึ้นเองอะค่ะ เช่น หนูเลือก A แล้วก็เลือก B แล้วกด backspace เพื่อลบ B และกด enter ข้อความใน cell มันขึ้นเป็น A, B, A อะค่ะอาจารย์

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Tue Apr 26, 2011 12:01 pm
by axiomy
อาจารย์คะ ในช่อง Data >> Validation >> Setting >> list (ในช่อง allow) มันมีข้อจำกัดหรอคะว่าสามารถใส่ข้อมูลในเท่าไหร่ คือหนูมีข้อมูลที่ต้องใส่ใน dropdown list เยอะอะค่ะ แล้วมันใส่ไม่พอ จะต้องแก้ไขอย่างไรคะอาจารย์

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Tue Apr 26, 2011 12:21 pm
by snasui
:D เนื่องจาก Event ที่ใช้ Run Code ที่เขียนมานั้น จะทำงานทุกครั้งที่เป็นการเปลี่ยนแปลงค่าในเซลล์ เมื่อเซลล์เกิดการเปลี่ยนแปลงจะเอาค่าเดิมมาเพิ่มด้วยค่าใหม่คั่นด้วยเครื่องหมาย , การกด Backspace ไปหนึ่งครั้งแล้ว Enter เป็นการเปลี่ยนแปลงค่าไปจากเดิม ค่าใหม่คือค่าหลังจากลบข้อความแล้ว เมื่อนำข้อความเดิมมาต่อด้วยข้อความใหม่ก็จะทำให้ได้ข้อความที่เกินความจำเป็น

การแก้ไขอาจจะเพิ่มปุ่มมา 1 ปุ่มเช่น ปุ่ม Option เพื่อที่จะเลือกได้ว่า เราต้องการ Edit ค่าเก่าไม่ต้องทำการ Run Event หรือให้ Run Event เพื่อ Add ค่าเข้าไปครับ

สำหรับ Drop-down List ใน Validation กรณีเป็น Excel 2003 สามารถป้อนข้อความได้ไม่เกิน 255 อักขระครับ แต่หากไปอ้างจากช่วงข้อมูลมาแล้วสามารถจะรับข้อมูลได้จำนวนมาก

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Tue Apr 26, 2011 1:13 pm
by snasui
ลืมแนะนำเรื่องหนังสือ เนื่องจากผมไม่ได้อ่านหนังสือไทยจึงขออภัยที่ไม่สามารถแนะนำหนังสือไทยได้ครับ แหล่งศึกษาของผมส่วนใหญ่คือ Help ของโปรแกรมเอง เวบต่างประเทศ เช่น http://www.mrexcel.com, http://www.excelforum.com และ Text book

สำหรับ Text book ที่จะแนะนำเป็น Excel 2010 Power Programming with VBA ของ John Walkenbach, Excel 2007 VBA Programmer's Reference ของ John Green และคณะ

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Tue Apr 26, 2011 2:17 pm
by axiomy
ขอบคุณอาจารย์มากๆค่ะ :D

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Tue Apr 26, 2011 3:07 pm
by axiomy
อาจารย์คะ เราไม่สามารถทำ Dropdown list โดยอ้างข้อมูลจาก Sheet อื่นได้หรอคะ หนูลองทำแล้วมันเหมือนบังคับว่าต้องให้อ้างอิงจากชีทเดียวกันเท่านั้นอะค่ะ

Re: ปรึกษาเรื่อง Dropdown list ที่สามารถเลือกได้หลายค่าค่ะ

Posted: Tue Apr 26, 2011 3:22 pm
by snasui
สามารถทำได้แต่ต้องให้ชื่อไว้กับช่วงเซลล์นั้น ๆ ครับ การให้ชื่อไว้กับช่วงเซลล์สามารถทำดังนี้ครับ
  1. คลุมช่วงเซลล์
  2. เข้าเมนู Insert > Name > Define...
  3. ช่อง Name in workbook: กรอกชื่อที่ต้องการ
  4. ช่อง Refers to: สังเกตว่าเป็นช่วงที่เราเลือกเอาไว้แล้ว > Add > Close
  5. การนำไปใช้เข้าเมนู Data > Validation > ช่อง Allow เลือก List > คลิกช่อง Source กดแป้น F3 เลือกชื่อที่ให้ไว้ > OK