2013-02-27 73 views
2

我試圖創建一個宏,以便僅當某個範圍內的所有單元格都具有特定值時才更改單個單元格的值。 我環顧四周,似乎我只能用基於變體的工作表變更宏來做到這一點。 在此基礎上,我已經把以下內容:當範圍內的所有單元格的值等於相同的值時更改單元格的值

Sub Worksheet_Change() 

Dim VarItemName As Variant 
VarItemName = Range("Other_Checks!G85:G87") 
Dim Value As String 

Application.EnableEvents = False 
If Range("Other_Checks!G85, Other_Checks!G86, Other_Checks!G87").Value = "N/A" Then 
    Range("Other_Checks!G88").Value = "N/A" 
Else 
    Range("Other_Checks!G88").Value = "Pending" 
    Application.EnableEvents = True 
End If 
End Sub 

問題是,它似乎只工作,如果在範圍內(G85)的變化(不管對方2個單元格的值)的第一個單元格。 我在做什麼錯?

+0

所以你想也許把單元格值放入一個數組並檢查它們全部? – 2013-02-27 17:45:16

回答

1

這適用於我使用Worksheet_Change事件。

您將需要替換您的範圍參考。

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim VarItemName As Range, cl As Range 

    If Not Intersect(Target, Range("A1:C1")) Is Nothing Then 
     If Range("A1") = "n/a" And Range("B1") = "n/a" And Range("C1") = "n/a" Then 
      Range("A2") = "n/a" 
     Else 
      Range("A2") = "Pending" 
     End If 
    End If 
End Sub 

順便說一句,這可以很容易地使用電子表格上的IF公式來完成。它可能是一個選擇考慮?

+0

感謝您的回覆,非常感謝您的協助。不幸的是,這根本不適合我。我按照您的建議編輯了範圍,但當範圍符合我的要求時,目標單元保持不變。還有什麼我失蹤? – 2013-02-28 19:38:17

+0

a)您是否將代碼放入'Worksheet_Change'事件中,即不是將其手動輸入到模塊中,而是將其放入'Sheet'代碼中? b)您沒有將recalc設置爲手動? – 2013-02-28 19:54:24

+0

啊,那是我的問題。我在一個模塊中。我已經將它移到了表單代碼中,現在它完美地工作。非常感謝你。你,先生,是一個傳奇! – 2013-02-28 19:59:53

相關問題