2

セルに入力された値に基づいてマクロを自動的に開始しようとしています。1つのセルに対してはできましたが、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 を確認し、条件が満たされている場合は M15 に値を入力する必要があります....

4

2 に答える 2

4

シドがすでに回答を投稿しているようですが、少し異なるバージョンを次に示します。

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
于 2013-11-05T22:41:00.373 に答える
3

これはあなたがしようとしていることですか(未テスト)?

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

また、使用しているので、このPOSTWorksheet_Changeも見たいと思うかもしれません。

于 2013-11-05T22:37:34.953 に答える