2017-04-18 98 views
0

我知道一張工作表不能有兩個獨立的子工作表變更。所以我刪除它。工作表更改模糊名稱解決方案?

我無法弄清楚我需要修改代碼的修改。會喜歡一些幫助。

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

如果'macro1'或'macro2'臨時更改工作表上的任何東西** **,禁用事件。請勿**重新分配Target。 – Jeeped

+0

你的代碼應該做什麼,它在做什麼? –

+0

代碼是否運行,但不起作用?它會拋出一個錯誤嗎?有什麼問題? – BruceWayne

回答

1

像這樣的東西應該適合你。作爲一個說明,永遠不要試圖重新分配Target說法:

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希望有兩個同時發生的worksheet_change事件,這就是我爲什麼這樣寫的原因。做ElseIf會工作得很好,雖然 – tigeravatar

+0

其實,我想這兩個都可能是真的,因爲沒有檢查Target是否是單個單元。 – Jeeped

相關問題