[英]How To Clear Contents of A Cell If Another Cell Changes In Vba
我对 vba 非常陌生,我在工作表 1 中有一个 A 列,在工作表 2 中有一个 B 列。我想如果工作表 1 A 列中的一个单元格发生变化,那么工作表 2 B 列中的一个单元格也应该改变。
Private Sub Worksheet_Change (ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Sheets("Sheet2").Range("B:B").ClearContents
End If
End Sub
我已经试过了,但它只是清除了整个专栏。
任何帮助将不胜感激。
其中之一应该可以解决问题:
Option Explicit
'
' If cell is edited in any way
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count = 1 And Not Intersect(Target, Range("A:A")) Is Nothing Then
Sheets("Sheet2").Range("B" & Target.Row).ClearContents
End If
End Sub
'
' If cell is cleared
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "" And Target.Cells.Count = 1 And Not Intersect(Target, Range("A:A")) Is Nothing Then
Sheets("Sheet2").Range("B" & Target.Row).ClearContents
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Const SOURCE_COLUMN As String = "A"
Const DESTINATION_NAME As String = "Sheet2"
Const DESTINATION_COLUMN As String = "B"
Dim dws As Worksheet, srg As Range, ColumnOffset As Long
With Me
Set srg = Intersect(Target, .Columns(SOURCE_COLUMN))
If srg Is Nothing Then Exit Sub
ColumnOffset = .Columns(DESTINATION_COLUMN).Column _
- .Columns(SOURCE_COLUMN).Column
Set dws = .Parent.Worksheets(DESTINATION_NAME)
End With
Dim durg As Range, drg As Range, sarg As Range
For Each sarg In srg.Offset(, ColumnOffset).Areas
Set drg = dws.Range(sarg.Address)
If durg Is Nothing Then Set durg = drg Else Set durg = Union(durg, drg)
Next sarg
If Not durg Is Nothing Then durg.ClearContents
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.