当细胞离开时细胞的内容发生变化

时间:2018-03-14 19:52:28

标签: excel vba excel-vba

我正在尝试获取一段代码,当第8列中的单元格发生更改时,它会删除其旁边的单元格值(第9列)。 嗯......这是简单的版本

第8列和第9列都是下拉列表,第9列中的下拉列表依赖于第8列。在第9列中,需要多个答案,所以我在互联网上找到了一个可以实现这一目标的代码,但现在是当我更改第8列中的值时,第9列不会自动删除。 下面的这段代码可以工作,但只有当我在当时更改1个单元格(在第8列中)时。当我在第8列中粘贴多个单元格或在第8列中选择单元格然后将其向下拖动(从右下角)时,它不起作用。

我没有很多编码经验,似乎无法为此找到合适的解决方案。 感谢QHarr,我得到了更多。 这是我的第二次尝试:

@media screen and (min-width:360px)

第一次尝试:

Dim ClearC9 As String
Dim i As Long
For i = 2 To 1000
    If Target.Cells.Count > 1 Then GoTo ClearC9
    If Not Intersect(Target, Range("H" & i)) Is Nothing Then
        Range("I" & i).ClearContents
    End If
    Next i

exitHandler:
Application.EnableEvents = True

  Columns("I:I").EntireColumn.AutoFit

ClearC9:
Selection.Offset(, 1).ClearContents

这是整个代码:

Dim i As Long
For i = 2 To 1000
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("H" & i)) Is Nothing Then
Range("I" & i).ClearContents
End If

1 个答案:

答案 0 :(得分:0)

创建交叉范围的一般模式

  1. 如果是Nothing则不执行任何操作
  2. 否则循环其细胞
  3. 例如:

         Private Sub Worksheet_Change(ByVal Target As Range)
         Dim rngDV As Range, TheIntersection As Range, r As Range
    
        '       stuff
    
        TheIntersection = Intersect(Target, rngDV)
        If TheIntersection Is Nothing Then
            '   do nothing
        Else
            For Each r In TheIntersection
                '   do something
            Next r
        End If
    End Sub