VBA向上/向下移动选定范围(带偏移?)

时间:2016-12-31 14:05:47

标签: excel vba range move offset

我正在构建一个工具,用户选择的单元格内容随箭头形状移动。

下面的代码非常适合移动一组或多组相邻单元格。 但是,反转代码似乎很棘手(偏移中的+1不起作用: - ?)

有什么想法吗? 谢谢, 奥古斯丁

Sub Move_Up()
    Selection.Cut
    Selection.Offset(-1, 0).Select
    Selection.Insert Shift:=xlDown
End Sub

2 个答案:

答案 0 :(得分:0)

如果您要将 Selected 单元格块向上移动一行,则:




  Sub ShiftBlockUp()
 Dim r As Range
设r =选择
 Intersect(r(1).EntireRow,r)。Offset(-1,0).Delete Shift:= xlUp
 End Sub
  
&#xA;&#xA; < p>如果要将 Selected 单元格块向下移动一行,则:

&#xA;&#xA;
  Sub ShiftBlockDown()&#xA; Dim r As Range&#xA;设r =选择&#xA;相交(r(1).EntireRow,r)。插入Shift:= xlDown,CopyOrigin:= xlFormatFromLeftOrAbove&#xA; End Sub&#xA;  
&#xA;

答案 1 :(得分:0)

假设要移动单元格并且覆盖的单元格只移动移动的位置,代码可能如下:

Sub MoveUp()
    Selection.Rows(Selection.Rows.count + 1).Insert Shift:=xlDown
    Selection.Rows(1).Offset(-1).Cut Selection.Rows(Selection.Rows.count + 1)
    Selection.Rows(1).Offset(-1).Delete Shift:=xlUp
    Selection.Offset(-1).Select
End Sub

Sub MoveDown()
    Selection.Rows(1).Insert Shift:=xlDown
    Selection.Rows(Selection.Rows.count).Offset(2).Cut Selection.Rows(1)
    Selection.Rows(Selection.Rows.count).Offset(2).Delete Shift:=xlUp
    Selection.Offset(1).Select
End Sub