2016-12-31 2 views
-1

Je construis un outil où le contenu des cellules sélectionnées par l'utilisateur est déplacé avec des formes de flèche.VBA déplacer gamme sélectionnée haut/bas (avec décalage?)

Le code ci-dessous fonctionne très bien pour déplacer un ou plusieurs groupes de cellules adjacentes vers le bas. Cependant, inverser le code semble difficile (+1 en décalage ne fonctionne pas: -?)

Une idée? Merci, Augustin

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

est votre intention de faire glisser les cellules autour uniquement ou avez-vous besoin de changer les écrasés? – user3598756

+1

Utilisez '1', pas' + 1' - '.Offset' a besoin d'un *** numéro *** et non d'une description de l'opération. – Comintern

+0

@Comintern, ce n'est pas ça: '+ 1' serait immédiatement converti en' 1' dans l'EDI VBA et le problème resterait toujours. Si Augustin répond à ma question, il pourrait être possible de trouver la sortie – user3598756

Répondre

0

Si vous souhaitez déplacer un bloc Selected de cellules jusqu'à par une ligne puis:

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

Si vous souhaitez déplacer un bloc Selected de cellules vers le bas par une rangée puis:

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

toutes les fonctionnalités de votre 'ShiftBlockDown()' seraient données par 'Selection.Rows (1) .Insert Shift: = xlDown' – user3598756

0

cellules en supposant doivent être déplacés ceux autour et écrasés sont simplement décalés où les fois ont été déplacés, le code pourrait être la suivante:

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