2017-04-18 13 views
0

私は、1枚のシートにワークシートの変更と呼ばれる2つの独立したサブを持つことができないことを知っています。だから私はそれを取り除いた。ワークシートがあいまいな名前解決を変更しますか?

私はこのコードを実行するために必要な変更を把握することができません。いくつかの助けが大好きです。

Private Sub Worksheet_Change(ByVal Target As Range) 


If Target.Row = 10 And Target.Column = 121 And Target.Count = 1 Then 

Set Target = Range("range1") 

If Target <> "Calculate" Then Exit Sub 

Select Case Target.Value 
Case "Calculate" 
    macro1 

End Select 
End If 


ElseIf Target.Row = 10 And Target.Column = 123 And Target.Count = 1 Then 

Set Target = Range("range2") 

If Target <> "Calculate" Then Exit Sub 

Select Case Target.Value 
Case "Calculate" 
    macro2 

End Select 

End If 

End If 



End Sub 
+0

を**ワークシート上の何も**、一時的にイベントを無効にします。ターゲットを再割り当てしない**。 – Jeeped

+0

あなたのコードは何をすべきか、それは何をしていますか? –

+0

コードは実行されますが機能しませんか?それはエラーを投げますか?問題は何ですか? – BruceWayne

答えて

1

このようなものはあなたのために働くはずです。ノート、決してTarget引数再割り当てしようとして: `macro1`または` macro2`変更した場合

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim rngCheck1 As Range 
    Dim rngCheck2 As Range 

    Set rngCheck1 = Intersect(Target, Me.Range("DQ10")) 'Row 10, Column 121 
    Set rngCheck2 = Intersect(Target, Me.Range("DS10")) 'Row 10, Column 123 

    Application.EnableEvents = False 
    On Error GoTo CleanExit 

    If Not rngCheck1 Is Nothing Then 
     If Trim(LCase(rngCheck1.Value)) = "calculate" Then Call macro1 
    End If 

    If Not rngCheck2 Is Nothing Then 
     If Trim(LCase(rngCheck2.Value)) = "calculate" Then Call macro2 
    End If 

CleanExit: 
    Application.EnableEvents = True 

End Sub 
+0

'ElseIf'はここで適切でしょうか?' rngCheck1'が真であれば 'rngCheck2'はチェックされませんか? – Jeeped

+0

@Jeepedもっと好ましい解決策になるのは確かです。投稿のタイトルはあいまいな名前で、私はOPと解釈しました。これは2つのワークシートの同時イベントが発生しているので、このように書いています。 – tigeravatar

+0

実際、Targetが単一のセルであるかどうかを確認するチェックがないので、両方とも真実であると思われます。 – Jeeped

関連する問題