snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
คำแสดงเจตนา
ขอผลแห่งการให้ความรู้นี้ จงกลับไปยังผู้ที่เป็นเจ้าของเดิม แม้ข้าพเจ้าจะไม่รู้จักท่านก็ตาม ขอให้แสงแห่งปัญญาที่ท่านเคยจุดไว้ ได้กลับไปเติมเต็มชีวิตของท่านอีกครั้ง และขอให้เจตนาของข้าพเจ้าเป็นการคืนความดีอย่างสงบ
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
yodpao.b
Gold
Posts: 1608 Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard
#1
Post
by yodpao.b » Thu Nov 17, 2011 7:51 am
อยากถามอาจารย์ว่าเมื่อคลิกเลือก ComboBox จะปรากฏรายการขึ้นมา ถ้าต้องการให้ในรายการนั้นเรียงลำดับจากน้อยไปมากเขียนโค้คอย่าไรดีครับ
โคดเดิมด้านล่าง
Code: Select all
Private Sub UserForm_Initialize()
Sheets("Data_Seminar").Select
Range("I4").Select
Do While Not IsEmpty(ActiveCell.Value)
ComboBox111.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
End Sub
1.GIF
You do not have the required permissions to view the files attached to this post.
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#2
Post
by bank9597 » Thu Nov 17, 2011 9:25 am
ปรัีบโค๊ดค่อนข้างยากอยู่ครับ
ลองเรียงข้อมูลใน "Data_Seminar" น่าจะง่ายกว่าน่ะครับ
หรือยังไง ลองส่งไฟล์แนบมาดูครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
yodpao.b
Gold
Posts: 1608 Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard
#3
Post
by yodpao.b » Thu Nov 17, 2011 11:24 am
ลัษณะที่ว่า ลองเรียงข้อมูลใน "Data_Seminar" ดีกว่าไหม
ผมเคยทำแล้วครับคือ
1.copy คอลัมตรงการนั้นไปวางที่คอลัมอื่นแล้วสั่งให้คอลัมนั้นเรียงลำดับ
2.แล้วจึงสั่งให้ ComboBox ไปมองหา
จบขั้นตอน
แต่ข้อเสียอยู่ที่ ถ้ามีข้อมูล 10000 ข้อมูล ก็เท่ากับว่า ต้องมีข้อมูลอีก1คอลัม=10000record
จะทำให้ไฟล์มีขนาดใหญ่โดยไม่จำเป็น และที่สำคัญผมต้องทำกับหน้าที่มีข้อมูลดิบเกือบทุกหน้า
จะทำให้ไฟล์ใหญครับ
พร้อมกันนี้ได้แนบไฟล์มาด้วยครับ
เรียงลำดับในComboBox.xls
You do not have the required permissions to view the files attached to this post.
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#4
Post
by bank9597 » Thu Nov 17, 2011 4:57 pm
รู้สึกว่าจะยากไปสำหรับผมแล้วครับ คงต้องพึ่งอาจารย์แล้วครับ
แต่แนะนำนิดนึงครับ ในการบันทึกข้อมูลมาจัดเก็บนั้น ผมเข้าใจว่าคุณจะทำการบันทึกผ่านฟอร์มที่สร้างขึ้นมา ทีนี้เมื่อมองรูปแบบการจัดเรียงแล้ว ยังสลับกันอยู่ เข้าใจว่าในขั้นตอนการบันทึกข้อมูลนั้นไม่มีระบบ RUN ตัวเลขให้เป็นไปตามลำดับ ดังนั้นเพื่อให้ทำงานง่ายและเราไม่ต้องเพิ่มเติมโค๊ดบ่อยๆ การจัดเก็บข้อมูลก็น่าจะเป็นสิ่งที่ควรจัดการให้ดีเป็นเบื้อนต้นก่อนครับ
ยังไงจะลองๆหาวิธีช่วยอีกแรงครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#5
Post
by bank9597 » Thu Nov 17, 2011 6:26 pm
ผมได้ลองปรับโค๊ดมาให้ครับ
เป็นการแก้ไขด้วยวิธีที่ค่อนข้างจะลักไก่ไปนิด เข้าใจว่าคุณต้องการเรียงลำดับของชื่อ โดยยึดตัวเลขท้ายประโยคเป็นหลัก เวลาเราทำการ Filter จึงทำได้ยาก (สำหรับผม)
ผมเลยเปลี่ยนมาทำ Filter ในช่อง ID แทน สามารถใช้งานได้ ยังไงลองนำไปปรับแต่งเองอีกหน่อย ก็น่าจะใช้ได้แล้วครับ
อาจารย์จะเน้นมากครับ หากเราต้องการทำงานกับ VBA เราจึงพยายามบันทึกมาโครครับ
สำเนาของ เรียงลำดับในComboBox.xls
You do not have the required permissions to view the files attached to this post.
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
yodpao.b
Gold
Posts: 1608 Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard
#6
Post
by yodpao.b » Fri Nov 18, 2011 7:59 am
bank9597 wrote: รู้สึกว่าจะยากไปสำหรับผมแล้วครับ คงต้องพึ่งอาจารย์แล้วครับ
แต่แนะนำนิดนึงครับ ในการบันทึกข้อมูลมาจัดเก็บนั้น ผมเข้าใจว่าคุณจะทำการบันทึกผ่านฟอร์มที่สร้างขึ้นมา ทีนี้เมื่อมองรูปแบบการจัดเรียงแล้ว ยังสลับกันอยู่ เข้าใจว่าในขั้นตอนการบันทึกข้อมูลนั้นไม่มีระบบ RUN ตัวเลขให้เป็นไปตามลำดับ ดังนั้นเพื่อให้ทำงานง่ายและเราไม่ต้องเพิ่มเติมโค๊ดบ่อยๆ การจัดเก็บข้อมูลก็น่าจะเป็นสิ่งที่ควรจัดการให้ดีเป็นเบื้อนต้นก่อนครับ
ยังไงจะลองๆหาวิธีช่วยอีกแรงครับ
รบกวนขอตัวอย่างการจัดเก็บที่เป็นระบบด้วยครับ ขอบคุณครับ
yodpao.b
Gold
Posts: 1608 Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard
#7
Post
by yodpao.b » Fri Nov 18, 2011 8:14 am
รบกวนอาจาร์ยช่วยดูกระทู้ที่เมื่อ: 17 พ.ย. 2011 07:51 หน่อยครับ ช่วยแสดงความคิดเห็นด้วยครับ
พอจะทำได้ไหมครับหรือว่าต้องแก้ปํญหาแบบที่คูณbank9597 กล่าวไว้
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#8
Post
by bank9597 » Fri Nov 18, 2011 9:44 am
ตอบยากครับ ผมคิดว่ามันไม่มีรูปแบบตายตัว สำคัญตรงที่จะนำไปใช้อย่างไรและยืดหยุ่นมากน้อยแค่ไหนครับ หากเราเตรียมข้อมูลไว้ดี เวลานำไปใช้ก็จะง่ายไปตามลำดับครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
yodpao.b
Gold
Posts: 1608 Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard
#10
Post
by yodpao.b » Fri Nov 18, 2011 10:42 am
อาจารย์ช่วยดูหน่อยครับ
ผมได้ลองทำดูแล้วแต่ข้อมูลมันไม่โชว์อะไรเลยครับผม
code
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
With ComboBox1
.Clear
.List = Sheets("Sheet1").Range("D4:D35").Value
Dim unsorted As Boolean, i As Integer, temp As Variant
unsorted = True
Do
unsorted = False
For i = 0 To UBound(.List) - 1
If .List(i) > .List(i + 1) Then
temp = .List(i)
.List(i) = .List(i + 1)
.List(i + 1) = temp
unsorted = True
Exit For
End If
Next i
Loop While unsorted = True
End With
Application.ScreenUpdating = True
End Sub
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 31176 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:
#11
Post
by snasui » Fri Nov 18, 2011 12:31 pm
ลองปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Private Sub UserForm_Initialize()
Dim unsorted As Boolean, i As Integer
Dim r As Range, temp As Variant
Application.ScreenUpdating = False
With Sheets("Sheet1")
Set r = .Range("D4", .Range("D" & Rows.Count) _
.End(xlUp))
End With
With ComboBox1
.Clear
.List = r.Value
unsorted = True
Do
unsorted = False
For i = 0 To UBound(.List) - 1
If .List(i) > .List(i + 1) Then
temp = .List(i)
.List(i) = .List(i + 1)
.List(i + 1) = temp
unsorted = True
Exit For
End If
Next i
Loop While unsorted = True
End With
Application.ScreenUpdating = True
End Sub
yodpao.b
Gold
Posts: 1608 Joined: Tue Jul 19, 2011 2:47 pm
Excel Ver: 2013,excel standard
#12
Post
by yodpao.b » Fri Nov 18, 2011 12:55 pm
ขอคุณมากมากครับผมจะเริ่มแก้ไข หมดคำถามแล้วครับจะนำข้อมูลที่ได้จากอาจาร์ยและจากคุณbank9597 ในอาทิตย์นี้ ไปปรับใช้กับโปรแกรมที่เขียนขึ้นใหม่
bank9597
Guru
Posts: 3868 Joined: Wed Aug 17, 2011 11:49 am
#13
Post
by bank9597 » Fri Nov 18, 2011 3:40 pm
สู้ๆครับ
Forum Rules
อย่าใช้ภาษาแชทในการตอบ-ถาม
ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ