Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 当单元格内容通过VBA更改但手动更改时,工作表\u更改不起作用_Excel_Vba - Fatal编程技术网

Excel 当单元格内容通过VBA更改但手动更改时,工作表\u更改不起作用

Excel 当单元格内容通过VBA更改但手动更改时,工作表\u更改不起作用,excel,vba,Excel,Vba,我正在尝试为B列中所有单元格的背景上色,这些单元格的内容已通过VBA更改 如果我手动更新单元格,背景会发生变化,但通过VBA进行更改时背景不会发生变化。我不明白为什么它不随VBA而改变 在名为OriginalData的工作表模块中,我有 Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Dim nName As String, nEmail As String Application.E

我正在尝试为B列中所有单元格的背景上色,这些单元格的内容已通过VBA更改

如果我手动更新单元格,背景会发生变化,但通过VBA进行更改时背景不会发生变化。我不明白为什么它不随VBA而改变

在名为
OriginalData
的工作表模块中,我有

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim nName As String, nEmail As String

    Application.EnableEvents = False

    For Each c In Target
      If c.Column = 2 And Target <> "" Then
         c.Interior.Color = RGB(255, 255, 0)
      End If
    Next c

    Application.EnableEvents = True

End Sub

您可能在
目标“
上出错,并被困在
应用程序中。EnableEvents=False
环境状态

首先,转到VBE的即时窗口(Ctrl+G)并输入命令
Application.EnableEvents=True
。在VBE中,针对多个目标单元格计数对代码进行此修改

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim nName As String, nEmail As String

    Application.EnableEvents = False

    For Each c In Target
      If c.Column = 2 And c.Value <> "" Then  '<~~ c <> "", not Target <> ""
         c.Interior.Color = RGB(255, 255, 0)
      End If
    Next c

    Application.EnableEvents = True

End Sub
Private子工作表\u更改(ByVal目标作为范围)
调光范围
Dim nName作为字符串,nEmail作为字符串
Application.EnableEvents=False
对于目标中的每个c

如果c.Column=2且c.Value为“”,则当事件处理程序执行过程中出现一些错误时,',它将无法在下一次正常工作。您可以找到并修复错误,它将正常工作

作为快速修复,您可以执行以下步骤:

  • 在工作表开始处添加“错误时继续下一步”
  • \u更改为 防止错误使代码停止工作
  • 以启用宏的格式保存工作簿,然后重新打开 活动内容
  • 运行宏,它将正常工作
  • 我测试了您的代码,并在Excel 2013中运行

    强烈建议您修复错误,而不是使用下一步错误恢复时的
    隐藏错误

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim c As Range
        Dim nName As String, nEmail As String
    
        Application.EnableEvents = False
    
        For Each c In Target
          If c.Column = 2 And c.Value <> "" Then  '<~~ c <> "", not Target <> ""
             c.Interior.Color = RGB(255, 255, 0)
          End If
        Next c
    
        Application.EnableEvents = True
    
    End Sub