Excel 如何使用ActiveCell进行多次选择

Excel 如何使用ActiveCell进行多次选择,excel,vba,Excel,Vba,我正在尝试从Sheet2中进行多个选择。该值来自同一列但不同的行(如果使用ActiveCell.Offset(1,0)将是可行的) “我的代码”从ActiveCell select中获取值,并运行宏,将其与另一个工作表(Sheet10)进行比较,并将一些信息复制并粘贴到目标工作表(Sheet5)中 下面是我现在拥有的代码 a = Sheet10.Cells(Rows.Count, 1).End(xlUp).Row c = Sheet2.Cells(Rows.Count, 5).End(xlUp)

我正在尝试从Sheet2中进行多个选择。该值来自同一列但不同的行(如果使用ActiveCell.Offset(1,0)将是可行的)

“我的代码”从ActiveCell select中获取值,并运行宏,将其与另一个工作表(Sheet10)进行比较,并将一些信息复制并粘贴到目标工作表(Sheet5)中

下面是我现在拥有的代码

a = Sheet10.Cells(Rows.Count, 1).End(xlUp).Row
c = Sheet2.Cells(Rows.Count, 5).End(xlUp).Row

For Each cell In Range(ActiveCell, ActiveCell.Offset(1, 0))

For i = 2 To a 'from Row 1 to the last row of "DMP"
Debug.Print ("i = " & i)

If cell.Value = Sheet10.Cells(i, 1).Value Then 'if selected cell matches (i,1) of "Sheet10 (DMP)"
    Debug.Print ("ActiveCell =" & ActiveCell.Value)

    For k = 1 To 20 'from Column 1 to Column 20
        Debug.Print ("k = " & k)

        For r = 1 To c 'from Row 1 to the last row of "Sheet 2(LightOn SKU)"
            Debug.Print ("r = " & r)

            If Sheet10.Cells(i, k).Value = Sheet2.Cells(r, 4).Value Then 'if value of (i,k) of "Sheet10 (DMP)" = (r,4) of "Sheet2 (LightOn SKU)"

                Sheet2.Range("A" & r & ":G" & r).Copy
                Sheet5.Activate
                b = Sheet5.Cells(Rows.Count, 1).End(xlUp).Row
                Sheet5.Cells(b + 1, 1).Select
                ActiveSheet.Paste
                Range("A" & r & ":L" & r).Borders.Color = vbBlack
             End If

        Next

    Next

End If

Next

Next
现在,它正在无休止的循环中运行。

仍然不清楚
你能更具体一点吗?在哪一行/哪一列复制了什么,粘贴在哪里?Hi@vbasic208我已经更新了代码以显示我的完整代码。复制和粘贴并不会真正影响我的要求。更多的是活动单元格的选择将决定要复制和粘贴的内容。那么,您的问题是什么?我注意到以下几点:变量a和c是未知的(可能在代码之前的代码中计算)。对于k=1到20,注释中有6到30。Sheet2的名称为“LightOn SKU”,但sheet10曾被称为“依赖关系矩阵”,后来被称为“DMP”。Sheet5的名称未知。代码可以优化。目前,ActiveCell只读取一个单元格,但我喜欢它读取多个选择。我同意代码不是最好的,它只是一个快速和肮脏的代码。我是第一次编码。不清楚activecell应该在哪张纸上?
Sub ACCopy2()

  Dim a As Long
  Dim c As Long
  Dim r As Long
  Dim i As Long
  Dim k As Integer
  Dim b As Long
  a = Sheet10.Cells(Rows.Count, 1).End(xlUp).Row
  c = Sheet2.Cells(Rows.Count, 5).End(xlUp).Row

  For r = 1 To c ' from Row 1 to the last row of "Sheet 2(LightOn SKU)"
    Debug.Print ("r = " & r)
    For i = 2 To a ' from Row 1 to the last row of "DMP"
      Debug.Print ("i = " & i)
      ' if selected cell matches (i,1) of "Sheet10 (DMP)"
      If Sheet2.Cells(r, 1).Value = Sheet10.Cells(i, 1).Value Then
        Debug.Print ("Sheet2 =" & Sheet2.Cells(r, 1).Value)
        For k = 1 To 20 ' from Column 1 to Column 20
          Debug.Print ("k = " & k)

          ' if value of (i,k) of "Sheet10 (DMP)" = (r,4) of
          ' "Sheet2 (LightOn SKU)"
          If Sheet10.Cells(i, k).Value = Sheet2.Cells(r, 4).Value Then
            With Sheet5
              b = Sheet5.Cells(Rows.Count, 1).End(xlUp).Row
              Sheet2.Range("A" & r & ":G" & r).Copy .Cells(b + 1, 1)
              .Range("A" & r & ":L" & r).Borders.Color = vbBlack
            End With
          End If

        Next
      End If
    Next
  Next
End Sub