【问题标题】:VBA Code to Copy Cells with Color to different cells in same sheetVBA代码将带有颜色的单元格复制到同一工作表中的不同单元格
【发布时间】:2019-08-13 14:16:54
【问题描述】:

我有一个问题是将包含颜色和某些值的单元格复制到一个范围内。以下代码的问题在于它复制粘贴了整个范围,而不是红色的范围。

Sub testing()

Dim Myrange As Range
Dim Mycell As Range
Dim Target As Range

Set Myrange = Sheet1.Range("A3:A15")
Set Target = Sheet1.Range("B3:B15")

For Each Mycell In Myrange
    If Mycell.Interior.ColorIndex = 3 Then
       Mycell.Copy Target
    End If
Next Mycell

End Sub

我的预期结果是复制目标范围内仅包含​​红色的粘贴单元格。 (如果 A3 单元格为红色,我希望 B3 单元格也为红色。但我不希望目标单元格的整个范围变为红色)

【问题讨论】:

  • Mycell.Copy mycell.offset(,1)
  • Mycell.Copy Sheet1.Range("B" & Mycell.row)

标签: excel vba


【解决方案1】:

如果您打算偏移 1,则不需要 target 范围:

Sub TestMe()

    Dim myRange As Range
    Dim myCell As Range

    Set myRange = Worksheets(1).Range("A3:A15")

    For Each myCell In myRange
        If myCell.Interior.ColorIndex = 3 Then
           myCell.Copy myCell.Offset(0, 1)
        End If
    Next myCell

End Sub

或者,如果您出于某种原因需要使用target,在这种情况下按索引循环就可以了,因为单元格位于 1 行中:

Sub TestMe()

    Dim myRange As Range
    Dim myCell As Range

    Set myRange = Worksheets(1).Range("A3:A15")
    Set target = myRange.Offset(columnoffset:=1)

    Dim i As Long
    For i = 1 To myRange.Cells.Count
        If myRange.Cells(i).Interior.ColorIndex = 3 Then
            myRange.Cells(i).Copy target.Cells(i)
        End If
    Next i

End Sub

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多