2017-09-26 50 views
0

我需要更改單元格的值。例如,Range("B1").value是「蛋糕」,我也如何更改單元格的值BEFORE Change_Event應用[Excel/VBA]

Range("B1").value = "Bubblegum" 

但是,我有一個Worksheet_Change事件,並在啓動時,如果我MsgBox "Target.value"這將是「蛋糕」,而不是「泡泡糖」。

這裏是我的事件:

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim cellAdress As String 
    cellAdress = Target.Column 

    If cellAdress = 5 Then 
     If Target.Value = "X" Then 
      Range("F" & Target.Row).Value = "0,0€" 
     ElseIf Target.Value = "O" Then 
      If Range("A" & Target.Row).Interior.ColorIndex = 2 Then 
       Range("F" & Target.Row).Value = Worksheets("Astreinte").Range("B10").Value 
      Else 
       Range("F" & Target.Row).Value = Worksheets("Astreinte").Range("B11").Value 
      End If 
     Else 
      Range("F" & Target.Row).Value = "Valeur Incorrecte" 
     End If 
    End If 

End Sub 

,這裏是我的代碼

For Each myDate In DateMonthCorrespondante 
    Range("E" & (2 + Day(myDate))).Value = "O" 
Next 

我怎樣才能改變這種狀況?

感謝您的幫助

+0

請包括整個代碼,這是對現在很少幫助你。 – Luuklag

+1

你說什麼有什麼問題。更改值後,只會觸發'Worksheet_Change'事件。你說的是Cake的價值,你改成了Bubblegum,但是'Worksheet_Change'返回了Cake?我無法重現這一點。 – Moacir

+0

這是因爲我的線上有問題 範圍(「E」&(2 + Day(myDate)))。Value =「O」 我之前保護了我的工作表......並沒有改變我的範圍的值。我的錯。 –

回答

0

您可以嘗試使用SelectionChange和共同變更事件,即

Dim v 

Private Sub Worksheet_Change(ByVal Target As Range) 

MsgBox v 

End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

v = Target.Value 

End Sub 

所有這些都在片模塊中。然後,您可以添加條件來限制您希望顯示該框的情況等。

+0

我試過了,但是selectionChange會在它改變之前取值。我想要它之後。 (儘管如此,感謝您的回答) –

+0

在「更改」事件中,「after」值可用作「Target」...而SelectionChange事件用於臨時存儲「v」中的「before」值以便將它置於手邊當單元格更改時 – MikeD

+0

好吧!謝謝你:)! –

0

禁用之前的事件並重新啓用之後。

Application.EnableEvents = False 
Range("B1").value = "Bubblegum" 
Application.EnableEvents = True 
0

那麼,在你的幫助下,我終於解決了我的問題。

我行

Range("E" & (2 + Day(myDate))).Value = "O" 

有一個錯誤,因爲該事件的,它並沒有這麼說我。

相關問題