2017-10-06 1846 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