Excel精英培训网

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

[已解决]自动的添加文本

[复制链接]
发表于 2014-7-7 11:46 | 显示全部楼层 |阅读模式
本帖最后由 billyzhang0609 于 2014-7-7 12:15 编辑

各位老师

       有个表格,我需要每天打开并且登记。当某一行登记“已完成”,则后面的单元格自动跟进当天的日期(日期不需要更新)。
       请问VBA怎么做啊,如果单纯的用函数=today(),出来的日期,每个单元格都是当天的日期。完全没有意义。                                                
最佳答案
2014-7-7 12:12
本帖最后由 大灰狼1976 于 2014-7-7 12:13 编辑
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column > 1 Then Exit Sub
  3. If Target.Row = 1 Then Exit Sub
  4. If Target.Count > 1 Then Exit Sub
  5. If Target = "" Then Target.Offset(, 2).ClearContents: Exit Sub
  6. If Target = "已完成" Then Target.Offset(, 2) = Format(Now, "yyyy/m/d")
  7. End Sub
复制代码
版本关系,VBA不能有中文内容,所以附件就不能上了。

自动的添加文本.zip

7 KB, 下载次数: 10

发表于 2014-7-7 12:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 大灰狼1976 于 2014-7-7 12:13 编辑
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column > 1 Then Exit Sub
  3. If Target.Row = 1 Then Exit Sub
  4. If Target.Count > 1 Then Exit Sub
  5. If Target = "" Then Target.Offset(, 2).ClearContents: Exit Sub
  6. If Target = "已完成" Then Target.Offset(, 2) = Format(Now, "yyyy/m/d")
  7. End Sub
复制代码
版本关系,VBA不能有中文内容,所以附件就不能上了。
回复

使用道具 举报

 楼主| 发表于 2014-7-7 12:39 | 显示全部楼层
大灰狼1976 发表于 2014-7-7 12:12
版本关系,VBA不能有中文内容,所以附件就不能上了。

不过还是有一个问题哦,只能一个单元格一个单元格的填已完成。如果有10个单元格,一次性黏贴10个已完成,就报错了。
回复

使用道具 举报

发表于 2014-7-7 12:54 | 显示全部楼层
这个代码只适合一个一个输入,如果需要复制粘贴,那代码会复杂一点。
我有时间的话做一下。
回复

使用道具 举报

 楼主| 发表于 2014-7-7 13:08 | 显示全部楼层
大灰狼1976 发表于 2014-7-7 12:54
这个代码只适合一个一个输入,如果需要复制粘贴,那代码会复杂一点。
我有时间的话做一下。

真是太感谢啦,老师。
回复

使用道具 举报

 楼主| 发表于 2014-7-8 15:57 | 显示全部楼层
大灰狼1976 发表于 2014-7-7 12:54
这个代码只适合一个一个输入,如果需要复制粘贴,那代码会复杂一点。
我有时间的话做一下。

进来兜一圈。。。{:141:}
回复

使用道具 举报

发表于 2014-7-9 14:22 | 显示全部楼层
给你个笨办法吧,但是比较简单,方便理解
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column > 1 Then Exit Sub
  3. For i = 2 To [a65536].End(3).Row
  4.   If Cells(i, 1) = "已完成" Then If Cells(i, 3) = "" Then Cells(i, 3) = Format(Now, "yyyy/m/d")
  5. Next i
  6. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-7-11 10:35 | 显示全部楼层
大灰狼1976 发表于 2014-7-9 14:22
给你个笨办法吧,但是比较简单,方便理解

嗯,列数不变,变了,就去改一改代码。
回复

使用道具 举报

 楼主| 发表于 2014-7-11 11:06 | 显示全部楼层
大灰狼1976 发表于 2014-7-9 14:22
给你个笨办法吧,但是比较简单,方便理解

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column > 1 Then Exit Sub

For i = 2 To [a65536].End(3).Row

  If Cells(i, 24) = "已完成" Then If Cells(i, 26) = "" Then Cells(i, 26) = Format(Now, "yyyy/m/d")

Next i

End Sub

为什么我改到24列输入不起作用啊?在第一列输入是OK的
回复

使用道具 举报

发表于 2014-7-11 11:56 | 显示全部楼层
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 24 Then Exit Sub
For i = 2 To [x65536].End(3).Row
  If Cells(i, 24) = "已完成" Then If Cells(i, 26) = "" Then Cells(i, 26) = Format(Now, "yyyy/m/d")
Next i
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 23:22 , Processed in 0.360115 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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