如何在Change_Event之前更改单元格的值应用[Excel / VBA]

时间:2017-09-26 11:50:16

标签: excel vba excel-vba

我需要更改单元格的值。例如,Range("B1").value是“蛋糕”,我做

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 

我该如何改变?

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

您可以尝试串联使用SelectionChange和Change事件,即

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

这一切都在表单模块中。然后,您可以添加条件来限制您希望框出现的情况等等。

答案 1 :(得分:0)

之前禁用事件并在之后重新启用。

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

答案 2 :(得分:0)

嗯,在你的帮助下,我终于解决了我的问题。

我在行中出错了

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

由于这件事,它并没有对我说。