Page 3 of 3

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล

Posted: Sat Mar 19, 2011 1:30 pm
by joo
อาจารย์ครับเมื่อคลิกที่ปุ่มค้นหาซ้ำกันข้อมูลที่แสดงใน ComboBox จะแสดงรายการซ้ำตามจำนวนที่คลิกปุ่มค้นหาครับ :o
ผมแทรกโค๊ดที่ปุ่มค้นหาแบบนี้

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 ตามซีทที่เปิดอยู่ในขณะนั้นครับ :D

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล

Posted: Sat Mar 19, 2011 2:12 pm
by snasui
:D กรณีต้องการให้ Clear ComboBox เพิ่ม Code ด้านล่างที่ Module ปกติ

Code: Select all

ActiveSheet.ComboBox1.Clear
ซึ่งผมปรับมาให้ใหม่เป็น

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
ขอบคุณครับ... :D โค๊ดที่อาจารย์แนะนำสั้นกะทัดรัดดีครับสามารถทำงานได้ดี
ผมปรับโค๊ดใหม่เพื่อให้ซ่อน 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
ดูไฟล์แนบประกอบครับ :P

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 ตามไฟล์ปัจจุบันครับ :D

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล

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

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล

Posted: Sat Mar 19, 2011 10:56 pm
by snasui
:lol: อืม...เข้าใจว่าต้องการให้แสดง 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 ไว้ในซีทไม่สามารถแก้ปัญหานี้ได้ใช่ไหมครับ :mrgreen:

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล

Posted: Sun Mar 20, 2011 8:19 am
by snasui
:D เท่าที่ทดสอบ มันแค่แสดงให้เห็นเฉย ๆ ไม่สามารถคลิกได้ครับ ถ้านำเมาส์ไปลากคลุมก็จะหายไป หรือเราแค่ Page Down แล้ว Page Up ก็หายไป เข้าใจว่าเป็น Bug ของ Excel 2003 เพราะว่า Excel 2007 ขึ้นไปไม่มีปัญหานี้ครับ

Re: ใส่รหัสก่อนเปิดซีทดูข้อมูล

Posted: Tue Mar 22, 2011 6:30 am
by joo
ขอบคุณครับที่ไขความกระจ่างให้ได้ทราบ :D