根据单元格值调用宏

时间:2018-07-19 09:15:53

标签: excel-vba

我是excel宏的新手,所以我需要帮助。 我希望基于特定值触发宏。我使用CONCATENATE函数获取名字和姓氏和月份的值,例如我希望“ Barna Gabor July”能够根据内容执行宏。到目前为止,我有这个:

Sub worksheet_Search(ByVal Target As Range)
Set Target = Sheets("Master File").Range("I12")
If Target.Value = "Barna Gabor July" Then
Call Barna_July
End If
If Target.Value = "Barna Gabor August" Then
    Call Barna_August
End If
If Target.Value = "Barna Gabor September" Then
    Call Barna_September
End If
If Target.Value = "Barna Gabor October" Then
    Call Barna_October
end if

*etc.....*

End sub

但是我收到错误消息“对象_worksheet的方法范围失败”,当我进行调试时,它会将我引向宏。

需要执行的宏相同,只是工作表和范围不同,因为我有更多的人和表格:

Sub Gabor_July()

    Sheets("Gabor").Range("q7:u15").Copy Destination:=Sheets("Master File").Range("c6:G14")
    Application.CutCopyMode = False

End Sub

你能告诉我我要去哪里吗?

如果我将其分配给按钮而不是在上面的命令中使用它,则宏为好

谢谢

1 个答案:

答案 0 :(得分:2)

我相信以下代码可以实现您的期望,只需将您的代码替换为下面的代码,该代码应放在工作表Sheets("Master File")下:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$I$12" Then
        Select Case Target.Value
            Case "Barna Gabor July"
                Barna_July
            Case "Barna Gabor August"
                Barna_August
            Case "Barna Gabor September"
                Barna_September
            Case "Barna Gabor October"
                Barna_October
        End Select
    End If
End Sub