Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vba如何检查单元格是否没有格式或颜色_Vba_If Statement_Cell_Conditional Formatting - Fatal编程技术网

vba如何检查单元格是否没有格式或颜色

vba如何检查单元格是否没有格式或颜色,vba,if-statement,cell,conditional-formatting,Vba,If Statement,Cell,Conditional Formatting,我最近有一个问题,关于如何将单元格值复制到它下面的所有单元格中,并根据a列何时到达空白单元格而停止 我正在使用的excel工作表有许多分隔行,当您向下滚动工作表时,这些分隔行在整行中以颜色填充以分隔类别。当宏检查A列中的空白单元格时,我希望能够跳过A列中的这些分隔行。或者我希望只将StopRow分配给第一个没有格式/没有颜色/没有值的单元格 多亏了今天早些时候的Ripster,我已经有了这些,但我没有把一个恰当的if-then语句与他提出的内容结合起来 Sub Example() Di

我最近有一个问题,关于如何将单元格值复制到它下面的所有单元格中,并根据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
请帮忙。


谢谢

您的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
有更优雅的方法可以做到这一点,但此解决方案最容易在代码中实现


希望这有帮助。

您的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
有更优雅的方法可以做到这一点,但此解决方案最容易在代码中实现


希望这有帮助。

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

若宏进入具有不同颜色检查的单元格,但不执行任何操作,则取下一个“i”。这应该是你想要的。可以添加更多颜色;)

链接到颜色-


End Sub

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

若宏进入具有不同颜色检查的单元格,但不执行任何操作,则取下一个“i”。这应该是你想要的。可以添加更多颜色;)

链接到颜色-


End Sub

StopRow本应位于列的末尾,即包含值的最后一个单元格所在的位置,但正如您在图像中看到的,当涉及到具有颜色的单元格时,它将停止,而不是继续到实际的最后一个单元格(没有背景色),此时不担心字体颜色。我尝试了你的解决方案,我看过了活动条件文档,我认为有一种方法比包含这样的大型功能模块更简单,我不记得怎么做了。我认为这只是一个FormatCondition=false或类似的东西,??不确定FormatConditions是集合对象,因此它将具有.Count属性。您可以使用它来停止您的程序,只要单元格(x,y).FormatConditions.Count=0,我想。我还没有测试过这个。但现在我相信你已经有了足够的答案,知道从这里开始的方向。StopRow应该是从列的末尾到包含值的最后一个单元格的位置,但正如你在图像中看到的,当涉及到有颜色的单元格时,它会停止,而不是继续到实际的最后一个单元格(没有背景色)现在不担心字体颜色。我尝试了你的解决方案,我看过了活动条件文档,我认为有一种方法比包含这样的大型功能模块更简单,我不记得怎么做了。我认为这只是一个FormatCondition=false或类似的东西,??不确定FormatConditions是集合对象,因此它将具有.Count属性。您可以使用它来停止您的程序,只要单元格(x,y).FormatConditions.Count=0,我想。我还没有测试过这个。但现在我相信你已经有了足够的答案,知道从这里走到哪里。我需要的不是x,而是在A列的最后一个单元格处停止的东西,所以如果A的单元格1到13有值,第14行是分色器行,A的单元格15到25有更多值,这意味着我希望宏停止复制A无值且无背景色(两种情况)行或第26行C列中的主值。只要为x选择一个数字,这意味着每次excel工作表更改时,我都必须更新x…有什么想法吗?好吧,我有点难以理解你写的内容,所以让我们试着一步一步地分析它。您说过要将主值一直复制到C列中,条件是:1。如果有彩色背景,复制将跳过2。如果同一行的A列中没有值,复制将停止。我是否正确理解了您的意思?如果是,那应该很容易;)立即尝试更新的代码;)啊。。。当然,您还可以添加Application.ScreenUpdating=true/false的功能,以加快速度;)我尝试了新代码,但仍然停留在灰色行,而不是跳过灰色行继续…当然,我不知道你的工作表中有什么颜色。这就是为什么我给了你们一个带有颜色索引的网页链接,这样你们就可以选择自己的了!做一些努力,把它改成你的颜色-你在代码中得到了评论“这里是黑色!!我不需要使用x,而是需要在A列的最后一个单元格处停止,因此,如果A的单元格1到13有值,而第14行是分色器行,A的单元格15到25有更多值,这意味着我希望宏停止复制C列中A没有值和backgr的行的主值