2016-12-31 147 views
-1

我正在構建一個工具,用戶選擇的單元格內容使用箭頭形狀移動。VBA向上/向下移動選定範圍(使用偏移?)

下面的代碼非常適合將一個或多個相鄰單元格向下移動。 但是,反轉代碼似乎很棘手(偏移+1不起作用: - ?)

任何想法? 如果你想一排,然後移動電池Selected塊謝謝, 奧古斯丁

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

是你的意圖只是拖動單元或者你需要轉移覆蓋的呢? – user3598756

+1

使用'1'而不是'+ 1' - '.Offset'需要一個***號碼***不是操作的描述。 – Comintern

+0

@Comintern,不是這樣的:在VBA IDE中'+ 1'會立即轉換爲'1',問題依然存在。如果奧古斯丁回答我的問題,有可能找到出路 – user3598756

回答

0

Sub ShiftBlockUp() 
    Dim r As Range 
    Set r = Selection 
    Intersect(r(1).EntireRow, r).Offset(-1, 0).Delete Shift:=xlUp 
End Sub 

如果要移動的細胞Selected擋了下來一行然後:

Sub ShiftBlockDown() 
    Dim r As Range 
    Set r = Selection 
    Intersect(r(1).EntireRow, r).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
End Sub 
+0

您的'ShiftBlockDown()'的所有功能將由'Selection.Rows(1).Insert Shift:= xlDown' – user3598756

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