2017-09-26 16 views
0

セルの値を変更する必要があります。例えば、私はWorksheet_Changeイベントを持っており、それが起動したとき、私はMsgBox "Target.value"場合には、「ケーキ」ではなく「バブルガム」になり、Range("B1").valueは「ケーキ」であると私はセルの値を変更する方法BEFORE Change_Eventを適用する[Excel/VBA]

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

を行います。しかし。ここで

は私のイベントです:

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 

どのように私はそれを変更することができますか?

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 

すなわちあなたがのSelectionChangeを使用して試してみて、タンデムでのイベントを変更することができ、あなたの助け

+0

ここをクリックしてください。 – Luuklag

+1

あなたが言ったことに何か問題があります。 'Worksheet_Change'イベントは、値を変更した後にのみトリガされます。あなたは値がCake、Bubblegumに変わったと言っていますが、 'Worksheet_Change'はCakeを返しましたか?私はこれを再現することはできません。 – Moacir

+0

私は私の行に問題があったためでした 範囲( "E"&(2 +日(myDate)))値= "O" 私は前に自分のシートを保護しました...それは変更されませんでした私の範囲の価値。私の悪い。 –

答えて

0

ため

おかげで、このすべては、シートモジュールになります。次に、ボックスを表示させたい状況を制限するための条件を追加することができます。

+0

私はそれを試しましたが、selectionChangeは変更する前に値を取るでしょう。そして私はそれを後にしたい。 (これにも関わらず、あなたの答えに感謝します) –

+0

Changeイベントでは "after"値が "Target"として利用可能ですが、SelectionChangeイベントは "v"に一時的に保存して手元に持っていますセルが変更されたとき – MikeD

+0

さようなら!有難うございます :) ! –

0

以前にイベントを無効にしてから再度有効にします。

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

まあ、あなたの助けを借りて私は最終的に私の問題を解決しました。

私はライン

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

のエラーを持っていたし、ため、イベントのために、それは私にそれを言いませんでした。

関連する問題