2016-12-29 20 views
0

私は2つのセルに基づいて2つのセルの値を変更するためにこのコードをまとめました。このコードを列の範囲全体に適用するにはどうすればよいですか?他の2つの列に基づいて2列の値を変更する

Private Sub Worksheet_Change(ByVal Target As Range) 

On Error GoTo ErrorHandler 

    If Range("N6").Value Like "FINISH" And Not Range("CL6").Value Like "BK WALL" Or Not Range("CL6").Value Like "INTG" Then 
     Application.EnableEvents = False 
     Range("CH6").Value = "Y" 
End If 
     Application.EnableEvents = True 
    If Not Range("N6").Value Like "FINISH" Or Range("CL6").Value Like "BK WALL" Or Range("CL6").Value Like "INTG" Then 
     Application.EnableEvents = False 
     Range("CH6").Value = "X" 
     Range("CO6").Value = "" 
End If 

ErrorExit: 
    Application.EnableEvents = True 
Exit Sub 
ErrorHandler: 
    Debug.Print Err.Number & vbNewLine & Err.Description 
    Resume ErrorExit 
On Error GoTo ErrorHandler 


End Sub 
+1

*は*範囲 - あなたはより具体的なことができますか? –

+0

私はあなたがColumm N(そしてColumn "CH" ...)全体にコードを適用したいと思う(私は読者ではない)と思う。 'For lRow = 6 to LastRow'を使い、' Range( "N"&lRow).Valueならば "FINISH" ...と同様に、残念なことに特定することはできません。 –

+0

私はvba.iに新しいです。列の範囲に適用するコードを取得しようとしています –

答えて

0

ような何か:私はこのコードは列全体に適用し得るのですか

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim dStart As Double, dFinish As Double, d As Double 

On Error GoTo ErrorHandler 

dStart = 6 
dFinish = Range("N" & dStart).CurrentRegion.Rows.Count + dStart - 1 
'You could just hard-code in dFinish = 45 here if you want... 


For d = dStart To dFinish 

    If Range("N" & d).Value Like "FINISH" And Not Range("CL" & d).Value Like "BK WALL" Or Not Range("CL6").Value Like "INTG" Then 
     Application.EnableEvents = False 
     Range("CH" & d).Value = "Y" 
    End If 

    Application.EnableEvents = True 

    If Not Range("N" & d).Value Like "FINISH" Or Range("CL" & d).Value Like "BK WALL" Or Range("CL" & d).Value Like "INTG" Then 
     Application.EnableEvents = False 
     Range("CH" & d).Value = "X" 
     Range("CO" & d).Value = "" 
    End If 

Next 

ErrorExit: 
    Application.EnableEvents = True 
Exit Sub 
ErrorHandler: 
    Debug.Print Err.Number & vbNewLine & Err.Description 
    Resume ErrorExit 
On Error GoTo ErrorHandler 


End Sub 
+0

コードは機能するようですが、シート全体がフリーズしますいつでもどこでもデータを入力することができます。 –

+0

さて、Worksheet_Changeイベントを使用して何かを変更すると、これは起動します。あなたが後にしているセルの1つを変更するたびにこれを何かするようにしたければ、ループするのではなく 'd'を' Target.Row'に変更しなければなりません。 –

+0

dをtarget.rowに変更しましたが、コンパイルエラーが発生しました。 –

関連する問題