Page 1 of 1

Macro : Combobox

Posted: Mon Oct 28, 2019 9:05 am
by wisitsakbenz
สอบถามครับ ถ้าอยากเพิ่ม list ใน Combobox แต่ละอัน จะต้องแอดทีละอันมันเสียเวลา

ในกรณีที่ต้อง add list เยอะๆ อาจารย์พอมีคำแนะนำหรือไม่ครับ ขอบคุณครับ

หมายเหตุ : Template และ Doctor อ้างอิงจากการเลือก Dept

Re: Macro : Combobox

Posted: Mon Oct 28, 2019 8:15 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Private Sub Workbook_Open()
    Dim r As Range
    'Clear ComboBox1 Items
    Call Clear_ComboBox
    
     'Add Items to ComboBox1 in Sheet1 while opening workbook
    For Each r In Sheet1.Range("n7:n16")
    With Sheet1.ComboBox1
        .AddItem r.Value
    End With
    Next r
End Sub

Sub Clear_ComboBox()
    Application.EnableEvents = False
    'Clear ComboBox & TextBox data
    With Sheet1
        .ComboBox1.Clear
        .ComboBox2.Clear
    End With
    Application.EnableEvents = True
End Sub

Re: Macro : Combobox

Posted: Tue Oct 29, 2019 8:18 am
by wisitsakbenz
ได้แล้วครับอาจารย์ snasui ขอบคุณมากครับ

Re: Macro : Combobox

Posted: Tue Oct 29, 2019 9:31 am
by wisitsakbenz
สอบถามเพิ่มเติมครับ

ถ้า list เมนู อยู่ใน sheet2 ต้องปรับ Code อย่างไรครับ ขอบคุณครับ

Re: Macro : Combobox

Posted: Tue Oct 29, 2019 10:01 am
by puriwutpokin
ปรับเป็น

Code: Select all

Private Sub Workbook_Open()
    Dim r As Range
    'Clear ComboBox1 Items
    Call Clear_ComboBox
    
     'Add Items to ComboBox1 in Sheet1 while opening workbook
    For Each r In Sheet2.Range("f4:f13")
    With Sheet1.ComboBox1
        .AddItem r.Value
    End With
    Next r
End Sub

Code: Select all

'Get Items to ComboBox2 based on ComboBox1 selection
Private Sub ComboBox1_Change()

    'Variable Declaration
    
    Dim s As Range
    
    'Clear Combobox2 before loading items
    ComboBox2.Clear
 
     With ComboBox2
        Select Case ComboBox1
        
            Case "A"
        For Each s In Sheet2.Range("h5:h15")
            With Sheet1.ComboBox2
            .AddItem s.Value
            End With
        Next s
        
            Case "B"
        For Each s In Sheet2.Range("i5:i14")
            With Sheet1.ComboBox2
            .AddItem s.Value
            End With
        Next s
  
            Case "C"
        For Each s In Sheet2.Range("j5:j14")
            With Sheet1.ComboBox2
            .AddItem s.Value
            End With
        Next s
  
            Case "D"
        For Each s In Sheet2.Range("k5:k14")
            With Sheet1.ComboBox2
            .AddItem s.Value
            End With
        Next s
  
        End Select
    End With
    
    ComboBox3.Clear
    
     With ComboBox3
        Select Case ComboBox1
            Case "A"
                For Each s In Sheet2.Range("c19:c25")
                    With Sheet1.ComboBox3
                    .AddItem s.Value
                    End With
                Next s
                
            Case "B"
                For Each s In Sheet2.Range("d19:d25")
                    With Sheet1.ComboBox3
                    .AddItem s.Value
                    End With
                Next s

            Case "C"
                For Each s In Sheet2.Range("e19:e25")
                    With Sheet1.ComboBox3
                    .AddItem s.Value
                    End With
                Next s


            Case "D"
                For Each s In Sheet2.Range("f19:f25")
                    With Sheet1.ComboBox3
                    .AddItem s.Value
                    End With
                Next s

        End Select
    End With

End Sub

Re: Macro : Combobox

Posted: Tue Oct 29, 2019 10:25 am
by wisitsakbenz
ได้แล้วครับอาจารย์ snasui ขอบคุณมากครับ