一个连续的宏来清除Excel VBA的相邻单元格

时间:2016-06-28 14:16:07

标签: excel vba excel-vba

我试图创建一个连续宏来检查列中的错误,如果存在,则会清除相邻单元格中的内容。带有错误的列具有一个公式,该公式将根据相邻单元格中的值填充数据。所以我希望程序在输入无效值时清除相邻单元格的值。这是我到目前为止所做的,但我不确定如何为相关错误指定相邻单元格。我输入X来表示不同的行值。

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

1 个答案:

答案 0 :(得分:0)

您所拥有的代码存在的问题是您正在使用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