运行宏下拉列表Excel

时间:2016-06-23 12:36:12

标签: excel vba excel-vba macros

我写了这个宏来将信息从之前的工作表复制并粘贴到活动工作表。我想把它变成一个下拉列表,但是当使用数据验证时,宏在被选中时不会运行。附上我的代码,我想知道我应该制作一个列表框还是应该坚持数据验证?我知道有一种方法可以在点击框中点击一次宏观运行

Sub WorkDay1()
ActiveSheet.Range("A6:H44").Value = Worksheets("Route Sheet - Manhattan 1").Range("A6:H44").Value

End Sub
Sub WorkDay2()

ActiveSheet.Range("A6:H44").Value = Worksheets("2").Range("A6:H44").Value
End Sub


Sub WorkDay3()
ActiveSheet.Range("A6:H44").Value = Worksheets("3").Range("A6:H44").Value
End Sub

Sub WorkDay4()
ActiveSheet.Range("A6:H44").Value = Worksheets("4").Range("A6:H44").Value
End Sub

1 个答案:

答案 0 :(得分:0)

假设您的下拉列表位于单元格A1中。

将此代码粘贴到工作表代码模块中。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        Select Case Target.Value
            Case "WorkDay1"
                WorkDay1
            Case "WorkDay2"
                WorkDay2
            Case "WorkDay3"
                WorkDay3
            Case "WorkDay4"
                WorkDay4
        End Select
    End If
    Application.EnableEvents = True
End Sub

在VBA项目浏览器中,双击要运行宏的工作表。这将打开该工作表的代码模块。然后将代码粘贴到该模块中。

enter image description here

添加此colud将在您选择工作表时更新值。

Private Sub Worksheet_Activate()
    Select Case Range("A1")
        Case "WorkDay1"
            WorkDay1
        Case "WorkDay2"
            WorkDay2
        Case "WorkDay3"
            WorkDay3
        Case "WorkDay4"
            WorkDay4
    End Select
End Sub