Excel精英培训网

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

拜托了各位大师,VBA自动编号问题求助!

[复制链接]
发表于 2014-9-10 23:32 | 显示全部楼层 |阅读模式
12学分
假如C3:T6(黄色区域)全部有内容时,在B3单元格内输入任意时间,那么D1就等于这个任意时间,且O1编号为TRM140909-01
当C7:T12(红色区域)全部添加了新内容后,这时在B7单元格输入任意时间,那么D1就等于这个B7单元格新输入的时间,O1编号则变为TRM140909-02
当C13:T……又添加了新内容后,这时在B13单元格输入任意时间,那么D1就等于这个B13单元格新输入的时间,O1编号则变为TRM140909-03
之后以此类推……

也就是说,在C3:T10000区域(最多时10000行记录),每任意添加任意行内容时:
D1定位抓取添加任意行的第一行B列中时间
O1编号递增,不添加内容编号保持不变
如何用VBA宏代码实现?

下面这个代码也是这论坛里面的一位朋友帮写的,如何修改可以实现?
Sub Macro1()
Dim rng As Range, i&, n&
For i = 6 To 1000 * 6 Step 6
    n = IIf(i = 6, 3, i - 6 + 1)
    Set rng = Range(Cells(n, 3), Cells(i, "t"))
    If Application.CountA(rng) = rng.Count Then
        [d1] = Cells(n, 2)
        [o1] = "TRM140909-" & Format(i \ 6, "00")
    End If
Next
End Sub


New picking list for ASSE.rar

14.92 KB, 下载次数: 5

 楼主| 发表于 2014-9-11 10:08 | 显示全部楼层
各位大师们,谁能帮我解决一下吗?
回复

使用道具 举报

发表于 2014-9-11 10:12 | 显示全部楼层
  1. <p>Private Sub Worksheet_Change(ByVal Target As Range)</p><p>    Dim n%, ir%</p><p>    ir = Target.Row</p><p>    If Application.WorksheetFunction.CountA(Range(Cells(ir, "c"), Cells(ir, "t"))) = Columns("c:t").Count Then</p><p>        If Cells(ir + 1, "b").End(xlUp).Row > 2 Then</p><p>            Application.EnableEvents = False    '表示禁用事件</p><p>            Range("d1") = Cells(ir + 1, "b").End(xlUp)</p><p>            Range("o1") = "TRM" & Format(Date, "YYMMDD") & "-" & Format(Application.WorksheetFunction.CountA(Range("b3:b" & ir)), "00")</p><p>            Cells(ir, 1) = Application.WorksheetFunction.CountA(Range(Cells(3, "c"), Cells(ir, "c")))</p><p>            Application.EnableEvents = True    '表示不禁用事件</p><p>        End If</p><p>    End If</p><p>
  2. </p><p>End Sub</p>
复制代码
New picking list for ASSE.rar (25.09 KB, 下载次数: 10)
回复

使用道具 举报

 楼主| 发表于 2014-9-11 11:42 | 显示全部楼层
wp8680 发表于 2014-9-11 10:12

复制粘贴了大批数据进去测试,有问题
回复

使用道具 举报

发表于 2014-9-11 13:40 | 显示全部楼层
sampsonpon 发表于 2014-9-11 11:42
复制粘贴了大批数据进去测试,有问题

哥,你说的是要复制大批数据进去么?
你说的是:
也就是说,在C3:T10000区域(最多时10000行记录),每任意添加任意行内容时:
D1定位抓取添加任意行的第一行B列中时间
O1编号递增,不添加内容编号保持不变
如何用VBA宏代码实现?

回复

使用道具 举报

 楼主| 发表于 2014-9-11 13:55 | 显示全部楼层
wp8680 发表于 2014-9-11 13:40
哥,你说的是要复制大批数据进去么?
你说的是:

对!大批数据当然最多最多都不会超过10000行。
我只仅仅复制粘贴了几十行就出问题了
回复

使用道具 举报

发表于 2014-9-11 14:20 | 显示全部楼层
看清楚,你是要求一行一行增加数据,不是一次性导入。
回复

使用道具 举报

 楼主| 发表于 2014-9-11 14:56 | 显示全部楼层
wp8680 发表于 2014-9-11 14:20
看清楚,你是要求一行一行增加数据,不是一次性导入。

对不起了,可能我们理解有偏差。我是想:

C3:T10000区域(最多时10000行记录),每任意添加任意行内容时:
D1定位抓取添加任意行的第一行B列中时间
O1编号递增,不添加内容编号保持不变
如何用VBA宏代码实现?

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 17:54 , Processed in 0.449622 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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