如何向上移动一个可见行?
How to move up one visible row?
我正在尝试在上面插入一行,然后向上插入到过滤后的电子表格中的下一个可见行。因为我想将操作应用于可见行(可以随机间隔),所以这行代码是不够的:
ActiveCell.Offset(-8, 0)
据我了解,这告诉 Excel 向上移动八行(因为我用来记录宏的单元格集恰好间隔八个单元格),而不是当前下的下一个可见行筛选条件。
显示可见数据行随机间隔的电子表格摘录
在这种情况下相隔 6 行,但它可以是任何数字。
宏代码:
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-8, 0).Rows("1:1").EntireRow.Select
我希望将最后一行代码“上升八行”替换为“在给定当前数据过滤器的情况下上升到下一个可见行”。
过滤器显示列 R = 0 的行,但我更喜欢一种方法,我不将该指令合并到 VBA 代码中,只查看可见数据而不是整个电子表格.
您应该检查或行被隐藏:
If Rows(15).Hidden then 'we are checking is Row 15 Hidden
'row is Hidden
Else
'row is Visible
End If
据我了解,您想在当前行上方插入一行,然后按 Ctrl-up 以便它跳到非空白的最后一行?试试这个:
r = Selection.Row: c = Selection.Column
Rows(LTrim(Str(r)) + ":" + LTrim(Str(r))).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
destrow = Range("A" & r).End(xlUp).Row
Cells(destrow, c).Select
请原谅我的编码风格孩子们,我是在 GW-BASIC 长大的,我对 21 世纪唯一的风格让步是我没有全部大写。
根据 Timothy 的建议,这是我根据 bankeris 的工作得出的代码:
'row is Hidden
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
'move up one cell
Else
'row is Visible
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
'insert row above then move up one.
End If
虽然我发现上面 Michael Angelico 的 post 是满足我的特定要求的更快的解决方案,但这是一个更通用的选项。
我正在尝试在上面插入一行,然后向上插入到过滤后的电子表格中的下一个可见行。因为我想将操作应用于可见行(可以随机间隔),所以这行代码是不够的:
ActiveCell.Offset(-8, 0)
据我了解,这告诉 Excel 向上移动八行(因为我用来记录宏的单元格集恰好间隔八个单元格),而不是当前下的下一个可见行筛选条件。
显示可见数据行随机间隔的电子表格摘录
在这种情况下相隔 6 行,但它可以是任何数字。
宏代码:
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-8, 0).Rows("1:1").EntireRow.Select
我希望将最后一行代码“上升八行”替换为“在给定当前数据过滤器的情况下上升到下一个可见行”。
过滤器显示列 R = 0 的行,但我更喜欢一种方法,我不将该指令合并到 VBA 代码中,只查看可见数据而不是整个电子表格.
您应该检查或行被隐藏:
If Rows(15).Hidden then 'we are checking is Row 15 Hidden
'row is Hidden
Else
'row is Visible
End If
据我了解,您想在当前行上方插入一行,然后按 Ctrl-up 以便它跳到非空白的最后一行?试试这个:
r = Selection.Row: c = Selection.Column
Rows(LTrim(Str(r)) + ":" + LTrim(Str(r))).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
destrow = Range("A" & r).End(xlUp).Row
Cells(destrow, c).Select
请原谅我的编码风格孩子们,我是在 GW-BASIC 长大的,我对 21 世纪唯一的风格让步是我没有全部大写。
根据 Timothy 的建议,这是我根据 bankeris 的工作得出的代码:
'row is Hidden
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
'move up one cell
Else
'row is Visible
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
'insert row above then move up one.
End If
虽然我发现上面 Michael Angelico 的 post 是满足我的特定要求的更快的解决方案,但这是一个更通用的选项。