我一直在尝试创建一个宏,它将通过电子表格并复制单元格E中的数字,然后将它们粘贴到单元格K和L中,然后重复为宏横向列E.即E1将被复制到K1和L1,E2将被复制到K2,L2等......
这是我到目前为止所做的:
Sub uy()
'
' Macro1 Macro
' lo
'
Range("E299").Select
Do Until IsEmpty(ActiveCell)
If ActiveCell.Value < 0 Then
Selection.Copy
Range("K299").Select
Do Until IsEmpty(ActiveCell)
ActiveSheet.Paste
Loop
Range("L299").Select
Do Until IsEmpty(ActiveCell)
ActiveSheet.Paste
Loop
Else
Range("L299").Select
Do Until IsEmpty(ActiveCell)
ActiveSheet.Paste
Loop
End If
ActiveCell.Offset(1, 0).Select
Loop
End Sub
当我运行宏时,它只是用虚线框突出显示单元格E229,单元格K299,L299保留为空白。我觉得Range("K299").Select, Do Until IsEmpty(ActiveCell), ActiveSheet.Paste
部分正在选择并复制一个空白单元格,因此它会在满足“Do Until IsEmpty(ActiveCell)”标准时自行终止。
我有办法解决这个问题吗?
答案 0 :(得分:0)
我觉得这样的事情会起作用。
Sub Copy()
Dim intRowCount as Long
Dim intLastRow as Long
intRowCount = 2
intLastRow = Application.CountA(Sheets(1).Range("e:e"))
For intRowCount = 2 To intLastRow
Sheets(1).Range("K" & intRowCount ).Value = Sheets(1).Range("E" & intRowCount ).Value
Sheets(1).Range("L" & intRowCount ).Value = Sheets(1).Range("E" & intRowCount ).Value
Next
End Sub
答案 1 :(得分:0)
我不太确定我是否帮助你。 但是如果你想将一个范围复制到另一个范围那么 这样做会。
Private Sub CommandButton1_Click()
For i = 1 To Cells(Rows.Count, 5).End(xlUp).Row
If Cells(i, 5) <> "" Then
Cells(i, 11).Value = Cells(i, 5).Value
Cells(i, 12).Value = Cells(i, 5).Value
End If
Next i
End Sub
这个marco的工作时间与电池一样长[&#39; i&#39;在E列中不是空的 并取得了细胞的价值&#39; i&#39;在E栏中,将其放入K和L列中
亲切的问候
答案 2 :(得分:0)
首先,请勿使用Activate
或Select
。他们在大多数代码中都没用99%。接下来,不要使用复制和粘贴。这种方法很慢。
以下代码更简洁,更快捷。
Sub EtoKL()
Dim WS As Worksheet
Dim LRow As Long, Iter As Long
Set WS = ThisWorkbook.Sheets("Sheet1") 'Change as necessary.
With WS
LRow = .Range("E" & .Rows.Count).End(xlUp).Row 'Get last used row in Column E.
For Iter = 1 To LRow 'Iterate from 1 to last used row.
Union(.Range("K" & Iter), .Range("L" & Iter)).Value = .Range("E" & Iter).Value
Next
End With
End Sub
如果有帮助,请告诉我们。