Excel精英培训网

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

[已解决]excel修改历史记录(日志)的运行错误

[复制链接]
发表于 2012-2-7 06:52 | 显示全部楼层 |阅读模式
本帖最后由 glhfgtd 于 2012-2-7 06:53 编辑

用了几周在论坛中发现的excel修改历史记录,突然发现,当同时选择两个或以上单元格后,若进行单元格的改动就会出现代码运行错误,请见附件,特此求教大家给予更正完善, 十分感谢{:30:}。

11120414498526.rar
最佳答案
2012-2-7 18:27
glhfgtd 发表于 2012-2-7 10:36
我的意思是说:多个单元格选择起来后,无论是Tab逐个改动单元格,或是用复制粘贴功能集体改动,代码都可正常 ...

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim x As Range
  3.     Dim r As Long
  4.     '保存新值
  5.     For Each x In Target
  6.         With Sheets("日志")
  7.             r = .[A65536].End(xlUp).Row + 1
  8.             .Cells(r, 1) = Time
  9.             .Cells(r, 3) = x.Value
  10.             .Cells(r, 4) = x.Address
  11.         End With
  12.     Next x
  13. End Sub

  14. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  15.     Dim y As Range
  16.     Dim r As Integer
  17.     '保存原值
  18.     For Each y In Target
  19.         With Sheets("日志")
  20.             .Cells(.[b65536].End(xlUp).Row + 1, 2) = y
  21.         End With
  22.     Next y
  23. End Sub
复制代码
记录你的修改2.rar (10.56 KB, 下载次数: 107)

11120414498526.rar

7.63 KB, 下载次数: 37

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-2-7 09:00 | 显示全部楼层
你是说把多个单元格选择起来,改成一样的?
回复

使用道具 举报

 楼主| 发表于 2012-2-7 10:36 | 显示全部楼层
本帖最后由 glhfgtd 于 2012-2-7 10:37 编辑

我的意思是说:多个单元格选择起来后,无论是Tab逐个改动单元格,或是用复制粘贴功能集体改动,代码都可正常运行。
回复

使用道具 举报

发表于 2012-2-7 18:27 | 显示全部楼层    本楼为最佳答案   
glhfgtd 发表于 2012-2-7 10:36
我的意思是说:多个单元格选择起来后,无论是Tab逐个改动单元格,或是用复制粘贴功能集体改动,代码都可正常 ...

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim x As Range
  3.     Dim r As Long
  4.     '保存新值
  5.     For Each x In Target
  6.         With Sheets("日志")
  7.             r = .[A65536].End(xlUp).Row + 1
  8.             .Cells(r, 1) = Time
  9.             .Cells(r, 3) = x.Value
  10.             .Cells(r, 4) = x.Address
  11.         End With
  12.     Next x
  13. End Sub

  14. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  15.     Dim y As Range
  16.     Dim r As Integer
  17.     '保存原值
  18.     For Each y In Target
  19.         With Sheets("日志")
  20.             .Cells(.[b65536].End(xlUp).Row + 1, 2) = y
  21.         End With
  22.     Next y
  23. End Sub
复制代码
记录你的修改2.rar (10.56 KB, 下载次数: 107)
回复

使用道具 举报

 楼主| 发表于 2012-2-9 01:52 | 显示全部楼层
谢谢,基本上达到了我想要的效果。
回复

使用道具 举报

发表于 2012-9-26 22:31 | 显示全部楼层
你好,
1.原值和修改后的值不对应
2.同时删除多个时有的没有记录
回复

使用道具 举报

发表于 2012-10-11 21:21 | 显示全部楼层
多列同时删除时不能保留原值
回复

使用道具 举报

发表于 2013-9-12 19:59 | 显示全部楼层
爱疯 发表于 2012-2-7 18:27
这样吗

版主,请问
  •             .Cells(r, 4) = x.Address
这段,我不是要求返回修改的单元格地址,是返回这个单元所在行的第一列的数值

请问该怎么写呢?谢谢了,比较急的
回复

使用道具 举报

发表于 2013-9-12 21:08 | 显示全部楼层
kluivertlch 发表于 2013-9-12 19:59
版主,请问
  •             .Cells(r, 4) = x.Address
    这段,我不是要求返回修改的单元格地址,是返回这 ...

  •             .Cells(r, 4) = Cells(x.Row, 1)


    是这样吗
    回复

    使用道具 举报

    发表于 2013-9-12 21:14 | 显示全部楼层
    谢谢~~~!是的
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-4-26 22:18 , Processed in 0.884217 second(s), 14 queries , Gzip On, Yac On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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