Excel 在值更新后运行宏以更改单元格

Excel 在值更新后运行宏以更改单元格,excel,vba,worksheet-function,private-methods,Excel,Vba,Worksheet Function,Private Methods,我不知道,我正在尝试构建一个代码,在我更改单元格后为单元格值输入前缀,我的意思是我将选择一个单元格并输入“342”。例如,在我更新该值后,我希望私有子将该单元格值更改为“GO-342”,我已经尝试过了,但它不起作用 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$D$3" Then If Left(Range("D3"), 2) = "GO" Then Exit Sub Range("D3")

我不知道,我正在尝试构建一个代码,在我更改单元格后为单元格值输入前缀,我的意思是我将选择一个单元格并输入“342”。例如,在我更新该值后,我希望私有子将该单元格值更改为“GO-342”,我已经尝试过了,但它不起作用

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$3" Then

If Left(Range("D3"), 2) = "GO" Then Exit Sub

Range("D3") = "GO-" & Range("D3")

End If
End Sub
整个代码:

    Private Sub Worksheet_Change(ByVal Target As Range)

'Cabeçalho
    Dim rng As Range
    Set rng = Range("D3,D5,I3,O3,O5,O7,X3,X5")
    If Intersect(Target, rng) Is Nothing Then Exit Sub
    For Each R In rng
        If R.Value = "" Then
            Exit Sub
        End If
    Next R
    Create

'Km
    Dim rng1 As Range
    Set rng1 = Range("X3,X5")
    If Intersect(Target, rng1) Is Nothing Then Exit Sub
    For Each R In rng1
        If R.Value = "" Then
            Exit Sub
        End If
    Next R
    Km

'GO
    If Target.Address = "$D$3" Then
    If Left(Range("D3"), 2) = "GO" Then Exit Sub
    Application.EnableEvents = False
        Range("D3") = "GO-" & Range("D3")
    Application.EnableEvents = True
    End If

    End Sub

“Cabeçalho”和“Km”可以工作,但“GO”不起作用

下面是代码的一个小修改:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$3" Then
    If Left(Range("D3"), 2) = "GO" Then Exit Sub
    Application.EnableEvents = False
        Range("D3") = "GO-" & Range("D3")
    Application.EnableEvents = True
End If
End Sub

代码必须放置在工作表代码区域。
必须启用。

您是否尝试过使用调试器单步执行?它在哪里不做你说它要做的事?对我来说绝对好。你把代码放在哪里了?我已经把它放在工作表上了,对我来说,它不起作用,我离开单元格,值不改变,我改变单元格,按enter键,只保留数字。它不会添加前缀直到不起作用,我会用完整的代码更新问题