macros如何根据特定范围内的不同单元格的值自动启动

我试图根据input到单元格中的值自动启动一个macros。 我能够做到这一个单元格,但我怎么能应用它的范围,例如从L1到L600?

以下是适用于1个单元的代码:

Sub Worksheet_Change(ByVal Target As Range) Dim CAD As String CAD = "Canadians (CDN)" If Intersect(Target, Range("L14")) Is Nothing Then Exit Sub Application.EnableEvents = False 'to prevent endless loop If Range("L14").Value = CAD Then Range("M14") = 1 End If Application.EnableEvents = True End Sub 

基本上,我必须检查下一个单元格L15,如果条件满足,则inputM15中的值,等等….

我看到Sid已经发布了一个答案,但是这里有一个稍微不同的版本:

 Sub Worksheet_Change(ByVal Target As Range) Dim CAD As String, c as Range, rng As Range CAD = "Canadians (CDN)" on error goto haveErr set rng = application.Intersect(Target, Me.Range("L1:L600")) if not rng is nothing then Application.EnableEvents = False for each c in rng.cells if c.value=CAD then c.offset(0,1).value=1 next c End If haveErr: Application.EnableEvents = True End Sub 

这是你正在尝试(未testing)?

 Private Sub Worksheet_Change(ByVal Target As Range) Dim CAD As String: CAD = "Canadians (CDN)" If Target.Cells.CountLarge > 1 Then Exit Sub On Error GoTo Whoa Application.EnableEvents = False If Not Intersect(Target, Range("L1:L600")) Is Nothing Then If Target.Value = CAD Then Target.Offset(, 1).Value = 1 End If Letscontinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume Letscontinue End Sub 

而且,由于您正在使用Worksheet_Change您可能也希望看到这个POST 。