2015-04-01 85 views
0

我得到了VBA代码来在Excel文件中填充一些T-SQL查询数据。在该数据中,一列包含红色,琥珀色,绿色和N/A值。现在我想要根据这些值(红色,琥珀色,绿色和白色)的背景颜色。我如何在VBA中做到这一点?使用VBA进行背景色条件格式化?

编辑:我需要像这样:

id firstname lastname complaint 
1 paul  nixon RED 
2 John  nathon RED 
3 sera  teag  AMBER 
4 CLARE  walker GREEN 

现在我要为列“投诉”根据单元格的值,背景颜色一样,如果单元格的值RED我要那个背景色也是红色等。在VBA代码中。

+0

[如何提出一个好问题](http://stackoverflow.com/help/how-to-ask)。告诉我们你有什么,我们将帮助解决它。不太可能你会让某人为你做。 – FreeMan 2015-04-01 12:54:28

+0

@ FreeMan,感谢您的回复。只是改变了一下。这可能有助于你理解。谢谢 – GK1960 2015-04-01 13:02:59

+0

您生成了哪些代码?你在哪里得到错误?同样,可能不会有人愿意为您编写代码,但愿意帮助解决特定问题。 – FreeMan 2015-04-01 13:08:12

回答

1

更改单元格的背景颜色也很简单。确定改变它的颜色是这里的关键步骤。如果你知道这4种颜色是唯一的选择,我只需要掏出箱子并设置颜色。如果您发现这种颜色增加到更多颜色,您可能需要在“字典”中定义它们,并执行查询而不是SELECT-CASE构造。

这个简单的代码可以用你的例子。您将希望根据您的实际应用更好地定义范围(可能不是“D2:D5”)并调整颜色。

Sub ColorWithText() 

    Dim cell As Range 

    For Each cell In Range("D2:D5") 
     Select Case UCase(cell.Value) 
      Case "RED" 
       cell.Interior.Color = RGB(255, 0, 0) 
      Case "AMBER" 
       cell.Interior.Color = RGB(255, 191, 0) 
      Case "GREEN" 
       cell.Interior.Color = RGB(0, 255, 0) 
      Case "WHITE" 
       cell.Interior.Color = RGB(255, 255, 255) 
     End Select 
    Next cell 
End Sub 

这是我的Excel实例在代码运行后的图片。 image with colors applied

+0

Hi @Byron Wall,In *** For范围内的每个单元格(“D2:D5”)*。我怎样才能将范围D5的值设置为最大值,因为我真的不知道会有多少行会出现在结果中。谢谢 – GK1960 2015-04-06 22:33:15

+0

可能有更好的资源解决了如何在各种情况下获取范围的最后值。常见模式包括:Range.End(xlDown),Range.SpecialCells(xlCellTypeLastCell),Intersect(Range.EntireColumn,Sheet.UsedRange)。如果你确定你的行数超过2行,并且没有中断,那么最简单的方法是对于范围(Range(“D2”),Range(“D2”)。End(xlDown))'中的每个单元格。 .End功能模仿​​键盘上的CTRL + (如向下)。这是一个受欢迎的SO线程:http://stackoverflow.com/questions/71180/。 – 2015-04-06 22:44:33

+0

嗨@Byron Wall,谢谢你的解释。 – GK1960 2015-04-06 23:00:13

相关问题