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