吉米亨德里克斯菜单

通常,代码放在工作表的模块中。

这是 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