2014-09-24 48 views
-1

我知道這將是一個新手問題,但我在下面有這個宏,我需要它從E16運行到E27。如何在宏中插入一個循環

基本上我需要的是每次用戶在該範圍的一個單元格中插入「NA」,例如E20時,宏將刪除F列中同一行中單元格的內容,在這種情況下F20 ,否則宏將在該單元格F20中插入公式(E20-5)。

這個宏是工作正常的一條線,但我將需要把一個循環,我只是不知道如何。有人能幫助我嗎?

這是我使用的代碼:

Public Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("E16")) Is Nothing Then 
    If UCase(Range("E16")) = "NA" Then 
     Application.EnableEvents = False 
     Range("f16").ClearContents 
     Application.EnableEvents = True 
    Else 
    Range("F16").Formula = "=(E16 - 5)" 
End If 
End If 

End Sub 
+0

在這種情況下,你真的需要一個宏嗎?如果你用一個公式如= IF(E16 =「NA」,「」,E16-5)'? (把它放在F16中,然後向下複製。) – MattClarke 2014-09-24 23:09:26

回答

1

代碼:

Public Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("E16:E27")) Is Nothing Then 
     If UCase(Target) = "NA" Then 
      Application.EnableEvents = False 
      Target.Offset(0,1).ClearContents 
      Application.EnableEvents = True 
     Else 
      Target.Offset(0,1).Formula = "=(E16 - 5)" 
     End If 
    End If 
End Sub 

理論:

你其實並不需要在這裏一環,因爲Worksheet_Change事件是你的循環。

+0

非常感謝您的幫助......它的工作完美無缺。 – Atena 2014-09-24 13:50:34

+0

如果它適合您,請將其標記爲答案! – 2014-09-25 17:02:13

+0

OP你確定你不需要else語句來引用目標單元而不是硬編碼的E16嗎? – 2015-02-17 01:24:21