2016-12-27 138 views
1

刪除單元格時,我需要後,我已刪除的內容,以細胞轉移到右邊。 此選項不被Excel給予,我得到的只有4個選項: - 格左移 - 移動單元格了 - 整排 - 整列轉移細胞VBA

最後我希望最終的東西了艾克本在我的VBA代碼:

Selection.Delete Shift:=xlToRight 

我從

Selection.Delete Shift:=xlToLeft 

改變預先感謝您對本 Brgds任何幫助帕特里克

我終於結束了這一點,它的工作原理amzingly罰款:

Sub ShiftRight() 
Selection.End(xlToRight).Select 
numcol = ActiveCell.Column 
numcol2 = numcol 
numcol = (numcol - lngColNumber) + 5 
strcolletter = Split(Cells(1, numcol - 1).Address, "$")(1) 
strcolletter2 = Split(Cells(1, numcol2).Address, "$")(1) 
Range(Myrange).Select 
Selection.Cut Destination:=Columns(strcolletter & ":" & strcolletter2) 
End Sub 

我需要使用它們在頂層定義的變量,因爲範圍,我需要移動到右邊永遠具有相同的列數。

我希望這將幫助其他人的未來了。 Thx to all for your replies

+1

Excel不會「右移」的原因是因爲刪除留下了需要填充的「洞」。 'xlToRight'會留下一個*更大的*「洞」。只需將所有內容複製到右側,然後清除單元格內容。 – Comintern

+0

好吧,謝謝你的澄清。我即將編寫代碼來做到這一點。 –

回答

0

我同意它的意見,它不應該是大規模的複雜,但我認爲這是值得回答。這將保留移位單元的任何格式(那些於範圍的左側),但清除格式和刪除單元格的內容。

Sub DelRight() 

Dim firstColumn, lastColumn, firstRow, lastRow, nRows, nCols, colsToShift As Long 
Dim sheet As Worksheet 
Dim rangeToCopy, rangeToReplace, rangeToDelete As Range 

Set sheet = ActiveSheet 

firstColumn = Selection.Column 
nCols = Selection.Columns.Count 
nRows = Selection.Rows.Count 
lastColumn = firstColumn + nCols - 1 
colsToShift = firstColumn - 1 
firstRow = Selection.Row 
lastRow = firstRow + nRows - 1 

' Shift cells to left of the range to the right hand end of the range 
With sheet 
    If firstColumn > 1 Then 
     Set rangeToCopy = .Range(.Cells(firstRow, 1), .Cells(lastRow, colsToShift)) 
     Set rangeToReplace = .Range(.Cells(firstRow, lastColumn - colsToShift + 1), .Cells(lastRow, lastColumn)) 
     rangeToCopy.Copy destination:=rangeToReplace 
    End If 

    ' Delete cells to the left of the shifted cells 
    Set rangeToDelete = .Range(.Cells(firstRow, 1), .Cells(lastRow, lastColumn - colsToShift)) 
    rangeToDelete.ClearContents 
    rangeToDelete.ClearFormats 
End With 

End Sub