吉米亨德里克斯選單

通常,程式碼放在工作表的模組中。

這是 Worksheet_SelectionChange 事件,每次在活動工作表中選擇不同的單元格時都會觸發該事件。你可以從程式碼視窗上方的第一個下拉選單中選擇工作表,然後從旁邊的下拉選單中選擇“Selection_Change”。在這種情況下,每次啟用單元格時,程式碼都會重定向到組合框的程式碼。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   ComboBox1_Change
   
End Sub

這裡,專用於 ComboBox 的例程預設編碼為 Change 事件。在其中,有一個固定的陣列,填充了所有選項。不是最後一個位置的 CLEAR 選項,它將用於清除單元格的內容。然後將陣列傳遞給組合框並傳遞給執行工作的例程。

Private Sub ComboBox1_Change()

Dim myarray(0 To 5)
    myarray(0) = "Hey Joe"
    myarray(1) = "Little Wing"
    myarray(2) = "Voodoo Child"
    myarray(3) = "Purple Haze"
    myarray(4) = "The Wind Cries Mary"
    myarray(5) = "CLEAR"
    
    With ComboBox1
        .List = myarray()
    End With

    FillACell myarray()

End Sub

陣列將傳遞給使用歌曲名稱或空值填充單元格的例程以清空它們。首先,整數變數被賦予使用者選擇的位置的值。然後,將組合框移動到使用者啟用的單元格的左上角,並調整其尺寸以使體驗更加流暢。然後在活動單元中為整數變數中的位置分配值,該變數跟蹤使用者選擇。如果使用者從選項中選擇 CLEAR,則清空單元格。

對於每個選定的細胞重複整個程式。

Sub FillACell(MyArray As Variant)

Dim n As Integer

n = ComboBox1.ListIndex

ComboBox1.Left = ActiveCell.Left
ComboBox1.Top = ActiveCell.Top
Columns(ActiveCell.Column).ColumnWidth = ComboBox1.Width * 0.18

ActiveCell = MyArray(n)

If ComboBox1 = "CLEAR" Then
    Range(ActiveCell.Address) = ""
End If

End Sub