求Excel表格隔行粘贴然后在后面自动输入时间的VBA代码
下面的代码作用是将H列的内容粘贴到K列、M列、O列、等,(隔行粘贴,一直到255列),复制完成后删除H列和他后面的I列中的内容,本代码从第二行开始实行。现在我想在该代码中...
下面的代码作用是将H列的内容粘贴到K列、M列、O列、等,(隔行粘贴,一直到255列),复制完成后删除H列和他后面的I列中的内容,本代码从第二行开始实行。现在我想在该代码中再增加一点功能,就是当K列,M列、0列等(隔行) 中间填人数据时,在他们的后面自动记录填写该数据的时间,(该打个比方,就是如果检测到K2内有数据,在L2内就自动输入时间,如检测到M5内有数据,N5内自动输入时间,等等,如图)
时间一旦写人,就不会变,除非人工修改
Public Sub iSub()
Dim r&, r0&, c%, c0%, c1%
r0 = 2 '开始的行位置
c0 = Range("H1").Column '需要被复制的列位置设置在H列
c1 = Range("K1").Column '粘贴的列位置,最初设置在k列
For r = r0 To Cells(65536, c0).End(xlUp).Row
c = Cells(r, 256).End(xlToLeft).Column '256表示从左边开始到可以最多粘贴到第256-1列,本代码先检查第256列有无数据,没有往前检测,直到有数据,停止,该数据可以根据需要修改成需要的数据
If c < c1 Then c = c1 Else c = c + 2 'c+2表示每隔2行粘贴,如果是c+1表示每隔一行开始粘贴
Cells(r, c).Value = Cells(r, c0).Value
Cells(r, c0).Resize(1, 2).ClearContents '这代码的意思是删除被复制列,和他后面的一列本例是H列和他后面的I列。
Next
End Sub
请问该代码应当如何修改问题补充:
现在我想在该代码中再增加一点功能,就是当K列,M列、0列等(隔行) 中间填人数据时,在他们的后面自动记录填写该数据的时间,该时间一旦写人,就不会变,除非人工修改
这句话说的有点模糊,打个比方,就是如果检测到K2内有数据,L2内自动输入时间,检测到M5内有数据,N5内自动输入时间,等
具体请看图 展开
时间一旦写人,就不会变,除非人工修改
Public Sub iSub()
Dim r&, r0&, c%, c0%, c1%
r0 = 2 '开始的行位置
c0 = Range("H1").Column '需要被复制的列位置设置在H列
c1 = Range("K1").Column '粘贴的列位置,最初设置在k列
For r = r0 To Cells(65536, c0).End(xlUp).Row
c = Cells(r, 256).End(xlToLeft).Column '256表示从左边开始到可以最多粘贴到第256-1列,本代码先检查第256列有无数据,没有往前检测,直到有数据,停止,该数据可以根据需要修改成需要的数据
If c < c1 Then c = c1 Else c = c + 2 'c+2表示每隔2行粘贴,如果是c+1表示每隔一行开始粘贴
Cells(r, c).Value = Cells(r, c0).Value
Cells(r, c0).Resize(1, 2).ClearContents '这代码的意思是删除被复制列,和他后面的一列本例是H列和他后面的I列。
Next
End Sub
请问该代码应当如何修改问题补充:
现在我想在该代码中再增加一点功能,就是当K列,M列、0列等(隔行) 中间填人数据时,在他们的后面自动记录填写该数据的时间,该时间一旦写人,就不会变,除非人工修改
这句话说的有点模糊,打个比方,就是如果检测到K2内有数据,L2内自动输入时间,检测到M5内有数据,N5内自动输入时间,等
具体请看图 展开
1个回答
展开全部
根据前人的代码改了一下:这个自动触发的代码不用加在你原有代码中
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
For Each cel In Target
If cel.Column Mod 2 = 1 And cel.Column > 10 Then '当输入内容的单元格大于J列,且为奇数列时后一单元格写时间
If cel = "" Then
cel.Offset(0, 1).Clear
Else
If cel.Offset(0, 1) = "" Then cel.Offset(0, 1) = Date & " " & Time
End If
End If
Next cel
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range
For Each cel In Target
If cel.Column Mod 2 = 1 And cel.Column > 10 Then '当输入内容的单元格大于J列,且为奇数列时后一单元格写时间
If cel = "" Then
cel.Offset(0, 1).Clear
Else
If cel.Offset(0, 1) = "" Then cel.Offset(0, 1) = Date & " " & Time
End If
End If
Next cel
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询