【问题标题】:FOR NEXT or FOR EACH LOOP only works for first valueFOR NEXT 或 FOR EACH LOOP 仅适用于第一个值
【发布时间】:2015-07-30 10:46:32
【问题描述】:

请帮助为以下代码制作 For Next 循环; 我正在尝试复制范围内的每个单元格并将其传递到特定(固定位置)单元格,然后从特定(固定位置)单元格复制结果并将其粘贴到某些单元格中。我想为范围内的每个单元格执行此操作。使用宏我记录了下面的代码,它工作得很好,但我想从这个记录的宏中创建一个 For NEXT 或 FOR EACH 循环,所以请任何人帮助我。

'

' PastSpecialCheck6 Macro
'

' For L1
    ActiveSheet.Cells(12, 103).Select
    Selection.Copy
    Range("B9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B28:B34").Select
    Selection.Copy
    ActiveSheet.Cells(40, 103).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
' For L02
    ActiveSheet.Cells(13, 103).Select
    Selection.Copy
    Range("B9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B28:B34").Select
    Selection.Copy
    ActiveSheet.Cells(40, 104).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
' For L03
    ActiveSheet.Cells(14, 103).Select
    Selection.Copy
    Range("B9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("B28:B34").Select
    Selection.Copy
    ActiveSheet.Cells(40, 105).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

我尝试使用此代码进行循环,但徒劳无功。它仅适用于范围内的一个单元格。

  Sub pastspecialmy_30July2015_2()
 ' Ln is length
 Dim Ln As Variant
 ' i is numbers
 Dim i As Integer

 ' For L1

 For Each Ln In ActiveSheet.Range("CY12:CY30").Cells
   For i = 125 To 143
    ' Ln.Activate
    Range("B9").Select
    Selection.Value = Ln
    Range("B28:B34").Select
    Selection.Copy

    ActiveSheet.Cells(57, i).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
  Next
 Next

 End Sub

【问题讨论】:

  • 如果您将For Each 更改为简单的 for,如果您知道有多少行。现在还能用吗?

标签: vba excel


【解决方案1】:

这是你正在尝试的吗?

Sub Sample()
    Dim i As Long, n As Long
    Dim ws As Worksheet

    Set ws = ActiveSheet

    n = 103

    With ws
        For i = 12 To 30
            .Cells(i, 103).Copy
            .Range("B9").PasteSpecial Paste:=xlPasteValues, _
            Operation:=xlNone, SkipBlanks:=False, Transpose:=False

            .Range("B28:B34").Copy
            .Cells(40, n).PasteSpecial Paste:=xlPasteValues, _
            Operation:=xlNone, SkipBlanks:=False, Transpose:=False

            n = n + 1
        Next i
    End With
End Sub

【讨论】:

  • 完美工作,非常感谢您节省了我的时间。
猜你喜欢
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-12
  • 2011-10-19
  • 2018-09-08
相关资源
最近更新 更多