excel 上怎样VBA实现到达某列自动换行到下一行
Excel上一行有4个单元格有数据,怎样用VBA实现在第一个单元格前插入一个新单元格,则这4个有数据的单元格都后移,并且第4个换到一下行。也就是说一行只能有4个列。多的就...
Excel上一行有4个单元格有数据,怎样用VBA实现在第一个单元格前插入一个新单元格,则这4个有数据的单元格都后移,并且第4个换到一下行。也就是说一行只能有4个列。多的就换行。
展开
3个回答
展开全部
Private Sub Worksheet_Change(ByVal Target As Range)
r = Target.Row
If Len(Cells(r, 5)) > 0 And Target.Column < 5 Then
Application.EnableEvents = False
If Len(Cells(r + 1, 1)) = 0 Then
Cells(r + 1, 1) = Cells(r, 5)
Cells(r, 5) = ""
Application.EnableEvents = True
Else
If Len(Cells(r + 1, 4)) = 0 Then
Range("A" & r + 1).Insert xlShiftToRight
Cells(r + 1, 1) = Cells(r, 5)
Cells(r, 5) = ""
Application.EnableEvents = True
Else
Range("A" & r + 1).Insert xlShiftToRight
Application.EnableEvents = True
Cells(r + 1, 1) = Cells(r, 5)
Cells(r, 5) = ""
End If
End If
End If
End Sub
r = Target.Row
If Len(Cells(r, 5)) > 0 And Target.Column < 5 Then
Application.EnableEvents = False
If Len(Cells(r + 1, 1)) = 0 Then
Cells(r + 1, 1) = Cells(r, 5)
Cells(r, 5) = ""
Application.EnableEvents = True
Else
If Len(Cells(r + 1, 4)) = 0 Then
Range("A" & r + 1).Insert xlShiftToRight
Cells(r + 1, 1) = Cells(r, 5)
Cells(r, 5) = ""
Application.EnableEvents = True
Else
Range("A" & r + 1).Insert xlShiftToRight
Application.EnableEvents = True
Cells(r + 1, 1) = Cells(r, 5)
Cells(r, 5) = ""
End If
End If
End If
End Sub
展开全部
貌似只有vba实现了
问题: 貌似如果中间的有换行。那他下面的就都要向后换行啊。
按就定义个 integer的数组吧。
之后没插入一个数据都顺序进行动态写入。
问题: 貌似如果中间的有换行。那他下面的就都要向后换行啊。
按就定义个 integer的数组吧。
之后没插入一个数据都顺序进行动态写入。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-27
展开全部
你这样做 当数据比较多的时候 会感到很麻烦 其实你这样操作是每次都在 重写整张表的 记录……不知道你用来干什么……最好还是不这样做数据的规划……
我要是你我就只让这些数据 在一行或者在一列 以后的 打印、汇总、排版什么的再做后续处理……
那么给一个思路 就是当你在某一行前面或者那四列里边的某个位置插入 一个单元格后 接着就把多出来的第五列的数据剪下 然后插入 下一行的第一列的前面 如此往复 知道 第五列为空……
我要是你我就只让这些数据 在一行或者在一列 以后的 打印、汇总、排版什么的再做后续处理……
那么给一个思路 就是当你在某一行前面或者那四列里边的某个位置插入 一个单元格后 接着就把多出来的第五列的数据剪下 然后插入 下一行的第一列的前面 如此往复 知道 第五列为空……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询