首页 > 解决方案 > 根据单元格值调用宏

问题描述

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

你能告诉我哪里出错了吗?

如果我将宏分配给一个按钮,但在上面的命令中使用它时,宏是好的

谢谢

标签: excelvba

解决方案


我相信下面会做你所期望的,只需用下面的代码替换你的代码,这个代码应该放在 Sheet 下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

推荐阅读