首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据Excel VBA中使用的行数对特定单元格范围进行着色

如何根据Excel VBA中使用的行数对特定单元格范围进行着色
EN

Stack Overflow用户
提问于 2017-08-12 00:30:09
回答 1查看 647关注 0票数 0

如果之前有人回答过这个问题,我很抱歉,但我一直没有找到一个可行的解决方案。

我正在尝试修复/增强我们使用的工具之一,通过对不同的范围、不同的颜色进行着色,但只对被填充的数据使用的行进行着色。我已经找到了一个有效的解决方案,但由于某种原因,它给比我想要的更多的行着色。如果我只填充几行,它的颜色会超过80行。我使用的行数越多,它上色的行数就越多,但我还没有找到原因。

该工具填充A-AS列,并从第9行开始。它使用不同选项卡中的数据填充。我的测试至少可以说是不成功的。下面是该工具的外观:

报价生成器:

下面是我正在使用的代码片段:

代码语言:javascript
复制
    ' 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行。基本上,无论用户需要多少行。提前感谢所有人。

以下是我所做的更改,这些更改更接近我需要的内容,但仍不能完全满足我的需求:

代码语言:javascript
复制
    ' 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
EN

回答 1

Stack Overflow用户

发布于 2017-08-16 21:58:39

好吧,我想出了一个适合我情况的解决方案。我必须添加一条If语句,因为如果只有一行数据,它就不会给第一行着色。现在它完全按照我想要的那样工作了。

下面是我使用的代码:

代码语言:javascript
复制
' 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

如果这对其他人有帮助,那么付出的努力是值得的。如果有其他解决方案或更好的方法,请添加您的信息。我经常来这个网站寻找问题的解决方案,并发现它是周围最有益的网站之一。感谢那些在这方面提供意见的人,这是有帮助的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45639819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档