2017-10-06 1851 views
1

程序的功能是找到第一行有一個空單元格,該單元格的旁邊是需要剪切並粘貼到第26列上一行的數字。在Excel VBA中剪切和粘貼單元格

- 我試圖運行循環遍歷整個工作表並刪除行復制和粘貼。

- 如果裏面已經有數據,將跳過它並繼續。

-The第二種方法是我最有前途的,但我似乎無法找出如何運行單元格的格式(X,1)

(方法一)

Dim x As Integer 
x = 1 
this = x - 1 
rowdelete = x 

If Cells(x, 1) = "" Then 
Cells(x, 1).Select.Cut 
Cells(x - 1, 26).PasteSpecial 
Rows([rowdelete]).EntireRow.Delete 

End If 

(方法二)

Dim x As Integer 
x = 1 
this = x - 1 
rowdelete = x 

If Cells(x, 1) = "" Then 
Cells(x, 1).Select.Cut 
Cells(x - 1, 26).PasteSpecial 
Rows([rowdelete]).EntireRow.Delete 

End If 

回答

1

我不知道如果我只是錯過了一些東西,但你的方法1和方法2看起來與我完全相同。我認爲你的問題是你試圖粘貼到不存在的Row 0。定義您所有的rangescells也是一種好的做法,或者excel將採取當時正在進行的任何活動。

請嘗試下面的代碼,在列A中循環顯示空白單元格,並且不使用剪貼板,它可以爲您提供更快的速度。

Sub LoopThroughBlanks() 

    Dim wbk As Workbook 
    Dim ws As Worksheet 
    Dim lRow As Long 
    Dim Cell As Range 

    Set wbk = ActiveWorkbook 
    Set ws = wbk.Worksheets("Sheet1") 'Be sure to change this to your worksheet name! 

    With ws 
     'Find last row of data in worksheet 
     lRow = .Cells.Find(What:="*", _ 
      After:=.Cells(1, 1), _ 
      LookIn:=xlFormulas, _ 
      LookAt:=xlPart, _ 
      SearchOrder:=xlByRows, _ 
      SearchDirection:=xlPrevious, _ 
      MatchCase:=False).Row 
     'Loop through blank cells in col a 
     For Each Cell In .Range("A1:A" & lRow).SpecialCells(xlCellTypeBlanks) 
      If Cell.Row = 1 Then 
       .Range("A1").EntireRow.Insert 
      End If 
      'Copy to column 26 
      Cell.Offset(-1, 25).Value = Cell.Offset(0, 1).Value 
      .Rows(Cell.Row).EntireRow.Delete 
     Next Cell 
    End With 
End Sub