Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3199|回复: 18

如何清楚单元格时让同行内容随之清除

[复制链接]
发表于 2019-8-29 10:45 | 显示全部楼层 |阅读模式
例子.zip (29.61 KB, 下载次数: 3)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-8-29 11:45 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then
        With Application
            .EnableEvents = False
            .Union(Selection, .Intersect(Selection.EntireRow, Range("c:c,e:e,k:k,m:m,o:o,q:q,s:s,u:u,w:w"))) = ""
            .EnableEvents = True
        End With
    End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2019-8-29 16:16 | 显示全部楼层
爱疯 发表于 2019-8-29 11:45
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 Then
        With App ...

666确实成功了,执行代码是不是不可逆的,无法使用ctrl+z撤销
回复

使用道具 举报

发表于 2019-8-30 10:10 | 显示全部楼层
2379495266 发表于 2019-8-29 16:16
666确实成功了,执行代码是不是不可逆的,无法使用ctrl+z撤销

是的
回复

使用道具 举报

 楼主| 发表于 2019-9-1 19:24 | 显示全部楼层

例子3.zip (39.98 KB, 下载次数: 1)
回复

使用道具 举报

发表于 2019-9-2 10:37 | 显示全部楼层

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 Then
        If Len(Target) Then
            With Application
                .EnableEvents = False
                .Union(Target, .Intersect(Target.EntireRow, Range("c:c,e:e,j:j"))).ClearContents
                .EnableEvents = True
            End With
        End If
    End If

End Sub




蓝色判断的作用是:如果有姓名,才清空



回复

使用道具 举报

 楼主| 发表于 2019-9-2 13:18 | 显示全部楼层
爱疯 发表于 2019-9-2 10:37
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 Then

这个效果是 在姓名那列 选中任意单元格 输入内容再按回车 = 清空该行内容

我希望的是 选中姓名那一列任意1个或多个单元格后,按delete清除单元格内容,同时该行清空,然后再往被清除的那行姓名单元格输入内容,按回车不会自动清除下一行
回复

使用道具 举报

发表于 2019-9-2 14:45 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c
    r = Target.Row
    c = Target.Column

    If c = 2 Then
        With Application
            .EnableEvents = False
            .Union(Cells(r, c), .Intersect(Rows(r), Range("c:c,e:e,k:k,m:m,o:o,q:q,s:s,u:u,w:w"))) = ""
            .EnableEvents = True
        End With
    End If
End Sub



这样可以吗

回复

使用道具 举报

 楼主| 发表于 2019-9-2 14:50 | 显示全部楼层
爱疯 发表于 2019-9-2 14:45
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c
    r = Target.Row

之前你写的那个蓝色部分改成 If Len(Target) = 0 Then 就是我要的效果了,但是这个有一个问题就是 当选中B列姓名 连续的多个单元格时, 这个代码不生效 会报错
回复

使用道具 举报

发表于 2019-9-2 14:54 | 显示全部楼层
2379495266 发表于 2019-9-2 14:50
之前你写的那个蓝色部分改成 If Len(Target) = 0 Then 就是我要的效果了,但是这个有一个问题就是 当选中 ...

sdff23.gif
例子4.rar (38.29 KB, 下载次数: 4)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 00:27 , Processed in 0.622784 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表