用于清除相邻单元格的连续宏Excel VBA

问题描述:

我试图创建一个连续宏来检查列中的错误,如果存在,将清除相邻单元格中的内容。具有错误的列具有一个公式,该公式将根据相邻单元格中的值填写数据。所以我想要程序清除相邻单元格的值,如果输入的是无效值。这是我迄今为止,但我不确定如何指定一个相邻的单元格关联的错误。我放入X来表示不同的行值。用于清除相邻单元格的连续宏Excel VBA

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim ws As Worksheet 
    Set ws = Worksheet(1) 
     If Target.Column = 2 Then 
      If IsError(Target.Value) Then 
       *- Range("AX").ClearContents -* 
      End If 
     End If 
End Sub 
+0

'Target.Offset(0,1)'让你到右边的一个单元 - 如果这就是你的意思是“毗邻”这个词。 –

与你的代码的问题是,要使用的事件Worksheet_Change并识别式细胞作为目标。这将从不工作,公式结果中的更改不会被Worksheet_Change事件触发。 (尽管你可以用Worksheet_Calculate事件处理这些事件 - 但这不是你在这里需要的)。实际上要更改的单元格需要进行评估。

什么可能会更好地为您设置输入单元Data Validation以确保提供正确的输入。这样就不需要VBA。但是,如果这不起作用,下面的代码将工作。

Private Sub Worksheet_Change(ByVal Target As Range) 
'worksheet_change will always work on the current worksheet, only identify _ 
another worksheet if you want to act on a range in a different sheet 

'-> 3 assumes the input column is C (based on your description) 
If Target.Column = 3 And IsError(Target.Offset(,-1)) And Target.Rows.Count = 1 and Target.Columns = 1 Then 

    Application.EnableEvents = False 
    Target.Offset(,-1).ClearContents 
    'Msgbox "Enter a valid value." ' possible warning message 
    Application.EnableEvents = True 

End If 

End Sub 
+0

谢谢!注意,有没有办法检查公式结果的变化? –

+0

我需要的是清除输入内容,但如果我这样做,更改事件将继续触发并导致无限循环。 –

+0

看到我的编辑@KevinLe - 我在原始答案中忘记了一个**非常重要的**步骤。我也一次只做一次单元更换。如果需要根据范围进行测试,可以修改。 –