Page 3 of 3
Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 1:30 pm
by joo
อาจารย์ครับเมื่อคลิกที่ปุ่มค้นหาซ้ำกันข้อมูลที่แสดงใน ComboBox จะแสดงรายการซ้ำตามจำนวนที่คลิกปุ่มค้นหาครับ
ผมแทรกโค๊ดที่ปุ่มค้นหาแบบนี้
Code: Select all
Sub FilComboBox()
Dim MyName() As String
Dim MyTotalSheets As Integer
Dim i As Integer
Sheets("INDEX").ComboBox1.Visible = True
Sheets("INDEX").ComboBox1.DropDown
MyTotalSheets = Application.Worksheets.Count
ReDim MyName(MyTotalSheets)
For i = 1 To MyTotalSheets
MyName(i) = Sheets(i).Name
ActiveSheet.ComboBox1.AddItem MyName(i)
Next i
End Sub
และที่ซีท INDEX แบบนี้
Code: Select all
Private Sub ComboBox1_Click()
Worksheets(ComboBox1.Value).Select
ComboBox1.Visible = False
End Sub
พอคลิกปุ่มค้นหาเลือกซีทที่ต้องการ จะเห็น ComboBox ตามซีทที่เปิดอยู่ในขณะนั้นครับ

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 2:12 pm
by snasui

กรณีต้องการให้ Clear ComboBox เพิ่ม Code ด้านล่างที่ Module ปกติ
ซึ่งผมปรับมาให้ใหม่เป็น
Code: Select all
Sub FilComboBox()
Dim i As Integer
ActiveSheet.ComboBox1.Clear
For i = 1 To Application.Worksheets.Count
ActiveSheet.ComboBox1.AddItem Worksheets(i).Name
Next i
End Sub
Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 7:24 pm
by joo
ขอบคุณครับ...

โค๊ดที่อาจารย์แนะนำสั้นกะทัดรัดดีครับสามารถทำงานได้ดี
ผมปรับโค๊ดใหม่เพื่อให้ซ่อน ComboBox ไว้ก่อนแบบนี้ครับ
Code: Select all
Sub FilComboBox()
Dim i As Integer
ActiveSheet.ComboBox1.Clear
Sheets("INDEX").ComboBox1.Visible = True
For i = 1 To Application.Worksheets.Count
ActiveSheet.ComboBox1.AddItem Worksheets(i).Name
Next i
Sheets("INDEX").ComboBox1.DropDown
End Sub
พบปัญหาคือ
1.เมื่อคลิกปุ่มค้นหา ComboBox จะแสดงรายการแบบ Drop Down เมื่อคลิกเลือกซีทที่ต้องการได้แล้ว เจ้าตัว ComboBox นี้ มันจะแทรกให้เห็นรบกวนสายตาใน
ซีทที่เลือกเปิด
2.เมื่อคลิกปุ่มค้นหา ComboBox จะแสดงรายการแบบ Drop Down แล้วเราไปเลือกคลิกที่ตรงสามเหลี่ยมของ ComboBox แทนแล้วจึงค่อยเลือกซีท พบว่าซีทที่เลือกเปิดจะไม่มีตัว ComboBox มาแทรกรบกวนสายตา แต่เมื่อกลับไปที่ซีท INDEX ตัว ComboBox กลับไม่ซ่อนตัวตามต้องการ
ต้องปรับแก้โค๊ดเพิ่มเติมตรงไหนดีครับ

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 7:47 pm
by snasui
กรณีต้องการซ่อน ComboBox ไว้ก่อน ที่ Module ปกติใช้ Code เดิมครับ ส่วนที่ชีท INDEX ปรับ Code เป็นตามด้านล่างครับ
Code: Select all
Private Sub ComboBox1_Click()
Worksheets("INDEX").ComboBox1.Visible = False
Worksheets(ComboBox1.Value).Select
End Sub
ดูไฟล์แนบประกอบครับ

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 8:15 pm
by joo
ทดลองแล้ว OK ครับ แล้วของข้อ1ต้องแก้ตรงไหนครับ
Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 9:11 pm
by snasui
ไฟล์ที่ผมทดสอบไม่เจอปัญหาเช่นว่านั้นครับ ไฟล์ที่ผมแนบไปยังเป็นปัญหาอยู่หรือเปล่าครับ ถ้าไม่เป็นก็ใช้ Code ตามไฟล์ปัจจุบันครับ

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 10:31 pm
by joo
ไฟล์ของอาจารย์ใช้ได้ไม่มีปัญหาครับแต่ว่าลืมทำของข้อ1 ไว้ด้วยเลยไม่เจอปัญหา ลองทดสอบไฟล์นี้ดูหน่อยครับ
Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sat Mar 19, 2011 10:56 pm
by snasui

อืม...เข้าใจว่าต้องการให้แสดง Drop Down เมื่อคลิกค้นหา ผมเพิ่ม User Form เข้ามาและปรับปรุง Code เพิ่ม ลองดูไฟล์แนบประกอบครับ
ที่ Module ปกติ Code เป็น
Code: Select all
Sub FilComboBox()
Dim i As Integer
With UserForm1.ComboBox1
.Visible = True
.Clear
For i = 1 To Application.Worksheets.Count
.AddItem Worksheets(i).Name
Next i
.DrowDown
End With
End Sub
ที่ชีท INDEX ลบ Code ออก และที่ UserForm1 Code เป็น
Code: Select all
Private Sub ComboBox1_Change()
On Error Resume Next
Worksheets(UserForm1.ComboBox1.Text).Select
Me.Hide
End Sub
Private Sub ComboBox1_DropButtonClick()
With UserForm1.ComboBox1
.Top = Range("H22").Top
.Left = Range("H22").Left
End With
End Sub
Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sun Mar 20, 2011 8:12 am
by joo
User Form ใช้งานได้ดีแสดงว่าถ้าวาง ComboBox ไว้ในซีทไม่สามารถแก้ปัญหานี้ได้ใช่ไหมครับ

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Sun Mar 20, 2011 8:19 am
by snasui

เท่าที่ทดสอบ มันแค่แสดงให้เห็นเฉย ๆ ไม่สามารถคลิกได้ครับ ถ้านำเมาส์ไปลากคลุมก็จะหายไป หรือเราแค่ Page Down แล้ว Page Up ก็หายไป เข้าใจว่าเป็น Bug ของ Excel 2003 เพราะว่า Excel 2007 ขึ้นไปไม่มีปัญหานี้ครับ
Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล
Posted: Tue Mar 22, 2011 6:30 am
by joo
ขอบคุณครับที่ไขความกระจ่างให้ได้ทราบ
