在Excel VBA中剪切和粘贴单元格
问题描述:
程序的功能是找到第一行有一个空单元格,该单元格的旁边是需要剪切并粘贴到第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和方法2看起来与我完全相同。我认为你的问题是你试图粘贴到不存在的Row 0
。定义您所有的ranges
和cells
也是一种好的做法,或者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