2017-08-11 70 views
0

如果此前已得到解答,我表示歉意,但我没有找到可行的解决方案来解决我的困惑。如何为Excel VBA中使用的行数取决于特定的单元格区域的颜色

我试图修复/增强我们使用的工具之一,通过着色不同范围的不同颜色,但只有被填充的数据使用的行。我已经能够找到可行的解决方案,但由于某种原因,它比我想要的要多得多。如果我仅填充几行,则会填充80行以上。我使用的行越多,颜色越多,我没有找到原因。

该工具填充列A-AS并从第9行开始。它使用来自不同选项卡的数据填充。我的测试至少没有成功。下面是工具的样子:

报价生成器:

Quote Builder

这是我的工作的代码片段:

' Color used range of cells 
    Sheet1.Range("A9:G9" & LastRowNo).Interior.Color = RGB(255, 242, 204) 
    Sheet2.Range("A9:G9" & LastRowNo).Interior.Color = RGB(255, 242, 204) 

    Sheet1.Range("H9:M9" & LastRowNo).Interior.Color = RGB(252, 228, 214) 
    Sheet2.Range("H9:M9" & LastRowNo).Interior.Color = RGB(252, 228, 214) 

    Sheet1.Range("N9:AI9" & LastRowNo).Interior.Color = RGB(226, 239, 218) 
    Sheet2.Range("N9:AI9" & LastRowNo).Interior.Color = RGB(226, 239, 218) 

    Sheet1.Range("AJ9:AS9" & LastRowNo).Interior.ColorIndex = 17 
    Sheet2.Range("AJ9:AS9" & LastRowNo).Interior.ColorIndex = 17 

请让我知道,如果你需要更多信息,我尽可能具体。

澄清所有试图帮助解决这个问题。上面的代码的工作原理除了它比我需要的更多的行着色更多。我只需要它从第9行开始,将用过的行着色为用户填充的行数。这可能只有1行到200行以上。基本上,用户需要多条线路。感谢所有提前。

下面是我所做的更改更接近了很多我所需要的,但仍然不是所有的存在方式:

' Color used range of cells 
    Sheet1.Range("A9:G1" & LastRowNo).Interior.Color = RGB(255, 242, 204) 
    Sheet2.Range("A9:G1" & LastRowNo).Interior.Color = RGB(255, 242, 204) 

    Sheet1.Range("H9:M1" & LastRowNo).Interior.Color = RGB(252, 228, 214) 
    Sheet2.Range("H9:M1" & LastRowNo).Interior.Color = RGB(252, 228, 214) 

    Sheet1.Range("N9:AI1" & LastRowNo).Interior.Color = RGB(226, 239, 218) 
    Sheet2.Range("N9:AI1" & LastRowNo).Interior.Color = RGB(226, 239, 218) 

    Sheet1.Range("AJ9:AS1" & LastRowNo).Interior.ColorIndex = 17 
    Sheet2.Range("AJ9:AS1" & LastRowNo).Interior.ColorIndex = 17 
+1

从所有的范围中删除第二个'9':'Sheet1.Range(“A9:G”&LastRowNo)。' –

+0

Scott Craner - 我必须做一些调整才能完全实现这个功能, 。感谢您的意见。 – CodeNewbie45

+0

Scott Craner - 经过一些进一步的测试后,我发现它只会为第9行着色,而其他所有行都不会使用。 – CodeNewbie45

回答

0

好吧,我能想出,对于有效的解决方案我的情况。如果只有一行数据,我不得不添加一条If语句,因为它不会着色第一行。现在它完全按照我想要的那样工作。

这里是我使用的代码:

' Color used range of cells 
If LastRowNo = 2 Then 
    Sheet1.Range("A9:G9").Interior.Color = RGB(255, 242, 204) 
    Sheet2.Range("A9:G9").Interior.Color = RGB(255, 242, 204) 

    Sheet1.Range("H9:M9").Interior.Color = RGB(252, 228, 214) 
    Sheet2.Range("H9:M9").Interior.Color = RGB(252, 228, 214) 

    Sheet1.Range("N9:AI9").Interior.Color = RGB(226, 239, 218) 
    Sheet2.Range("N9:AI9").Interior.Color = RGB(226, 239, 218) 

    Sheet1.Range("AJ9:AS9").Interior.ColorIndex = 17 
    Sheet2.Range("AJ9:AS9").Interior.ColorIndex = 17 
Else 
    Sheet1.Range("A9:G" & LastRowNo + 7).Interior.Color = RGB(255, 242, 204) 
    Sheet2.Range("A9:G" & LastRowNo + 7).Interior.Color = RGB(255, 242, 204) 

    Sheet1.Range("H9:M" & LastRowNo + 7).Interior.Color = RGB(252, 228, 214) 
    Sheet2.Range("H9:M" & LastRowNo + 7).Interior.Color = RGB(252, 228, 214) 

    Sheet1.Range("N9:AI" & LastRowNo + 7).Interior.Color = RGB(226, 239, 218) 
    Sheet2.Range("N9:AI" & LastRowNo + 7).Interior.Color = RGB(226, 239, 218) 

    Sheet1.Range("AJ9:AS" & LastRowNo + 7).Interior.ColorIndex = 17 
    Sheet2.Range("AJ9:AS" & LastRowNo + 7).Interior.ColorIndex = 17 
End If 

如果这可以帮助其他人那么这是值得的。如果还有其他解决方案或更好的方法,请添加您的信息。我经常到这个网站寻找解决问题的办法,并发现它是最有利的网站之一。感谢那些提供他们的意见,这是有帮助的。

相关问题