Excel精英培训网

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

编辑单元格事件触发

[复制链接]
发表于 2019-10-7 21:47 | 显示全部楼层 |阅读模式
本帖最后由 zhangv712 于 2019-10-8 08:52 编辑

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim c As Range
    For Each c In Target
     If Target.Column = 4 Then
Dim i%, j%, x%
i = Range("c65536").End(xlUp).Row '取得c列最后一个非空单元格行号
If i < 3 Then Exit Sub '当没有数据,只有标题行存在时,退出程序
For x = 3 To i
If Cells(x, c) <> "" Then j = j + 1: Cells(x, 1) = j '判断c列是否为空,不为空时,序号j+1写入对应A单元格
Next x
End Sub

哪里有问题  还请老师指点



发表于 2019-10-7 23:14 | 显示全部楼层
本帖最后由 rardge2015 于 2019-10-7 23:30 编辑

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
   
    For Each c In Target
        If c.Column = 4 Then    '  源代码是 Target.Column,错。另外,确定是 4?4 对应 D 列哦。
            Dim i%, j%, x%
            i = Range("c65536").End(xlUp).Row
            If i < 3 Then Exit Sub
            For x = 3 To i
                If Cells(x, "C") <> "" Then j = j + 1: Cells(x, 1) = j  ' 源代码是 Cells(x, c),要表示 C 列,必须加双引号!
            Next x
        End If  ' 源代码缺少 end if 收尾,if 语法不对
    Next    ' 源代码缺少 next 收尾,for each 语法不对
End Sub

另外,这代码放在 Worksheet_Change 事件中有点悬,可能结果出人意料哦。

评分

参与人数 1学分 +2 收起 理由
zhangv712 + 2 学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-10-8 08:51 | 显示全部楼层
rardge2015 发表于 2019-10-7 23:14
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
   

完美运行 {:9_305:}  感谢老师赐教!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 03:51 , Processed in 0.557339 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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