0

我最近有一个问题,关于如何将单元格值复制到其下方的所有单元格中,并根据 A 列何时到达空白单元格来停止。 邮政

我正在使用的 excel 工作表有许多分隔行,当您向下滚动工作表时,这些行在整行中填充颜色以分隔类别。当宏检查 A 列中的空白单元格时,我希望能够跳过 A 列中的这些分隔行。或者我只想将 StopRow 分配给第一个没有格式/没有颜色/没有值的单元格。

多亏了今天早些时候的 Ripster,这就是我所拥有的,但我未能将适当的 if then 语句与他的想法结合起来。

 Sub Example()
    Dim MasterValue As String
    Dim StopRow As Long
    Dim i As Long

    'Get the master value
    MasterValue = Range("C5").Value

    'Get the first blank cell in column A
    StopRow = Range("A1").End(xlDown).Row

    'Start at row 6 and continue to the "Stop Row"
    For i = 6 To StopRow
        'Set every cell from row 6 in column 3 to the "Master Value"
        Cells(i, 3).Value = MasterValue
    Next
End Sub

请帮忙。 IE

谢谢

4

2 回答 2

2

这花了我一段时间,但我找到了解决您问题的方法;)

如果宏转到具有不同颜色的单元格 - 检查并且什么都不做,则采用下一个“i”。这应该做你想要的。可以添加更多颜色;)

链接到颜色 - http://dmcritchie.mvps.org/excel/colors.htm

Sub Example()

For i = 6 To 1200
    If Cells(i, 3).Interior.ColorIndex = 1 Then 'here is color black

    Else
        If IsEmpty(Cells(i, 1)) = True Then 'if cells in column "A" is empty then stop
            Exit For

        Else
        Cells(i, 3).Value = Range("C5").Value
        End If

   End If

Next i

结束子

于 2013-07-25T11:54:59.107 回答
1

您的 StopRow 条件尚不清楚。您想在单元格具有条件格式规则时设置 StopRow 还是仅在其格式与默认格式不同时设置?一个单元格可能有一个规则,但它可能不会被应用。无论如何,这里介绍的功能是您可能会发现的有用的东西。

将 ActiveCondition 函数复制到模块中的某个位置,然后像这样更改你的 for 循环:

For i = 6 To StopRow
    If ActiveCondition(Cells(i,3))=0 Then StopRow=i : Exit For
    Cells(i, 3).Value = MasterValue
Next

如果你想检查不是来自条件格式的字体颜色变化,那么你需要一个额外的行:

 For i = 6 To StopRow
        If ActiveCondition(Cells(i,3))=0 Then StopRow=i : Exit For
        If Cells(1,3).Font.ColorIndex=0 Then StopRow=i : Exit For 
        Cells(i, 3).Value = MasterValue
    Next

有更优雅的方法可以做到这一点,但这个解决方案是最容易在您的代码中实现的。

希望这可以帮助。

于 2013-07-25T03:35:55.837 回答