0
输出我希望是类似于此页面:http://sub-atomic.com/~moses/acadcolors.html,但在Excel中。Excel单元格颜色由AutoCAD颜色的内容
我们要做的是将AutoCAD颜色与单元格相关联。我希望能够在单元格中输入颜色编号(比如颜色10,它是红色的),并让单元格变为该颜色。我不知道如何在没有宏观的情况下做到这一点。我认为这将是某种类型的VBA。
我从上面的网站的RGB等价物 - 我假设我可以拉一些类型的查找。
我意识到这可以用条件格式的一个特别讨厌的位来完成,但我真的更喜欢一些更简化的东西。
帮助?
编辑: UGP提供了一些非常好的代码,完全符合我的需要。这是我使用的最终代码(针对我的表命名和一些附加功能进行了调整)。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range(Cells(1, 6), Cells(1000, 6))
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
CellChanged = Target.Address 'Cell that changed
If IsNumeric(Worksheets("Master").Range(CellChanged).Value) Then
If Worksheets("Master").Range(CellChanged).Value = 0 Then
Worksheets("Master").Range(CellChanged).Interior.ColorIndex = xlNone
Worksheets("Master").Range(CellChanged).Font.Color = vbBlack
Else
Worksheets("Master").Range(CellChanged).Interior.Color =
Color(Worksheets("Master").Range(CellChanged).Value)
Worksheets("Master").Range(CellChanged).Font.Color =
textColor(Worksheets("Master").Range(CellChanged).Value)
End If
End If
End If
End Sub
Function Color(ByRef ID As Integer) As Long
Dim R, G, B As Integer
For i = 3 To 257
If ID = Worksheets("Colors").Cells(i, 1).Value Then
R = Worksheets("Colors").Cells(i, 2).Value
G = Worksheets("Colors").Cells(i, 3).Value
B = Worksheets("Colors").Cells(i, 4).Value
Color = RGB(R, G, B)
Exit For
End If
Next i
End Function
Function textColor(ByRef ID As Integer) As Long
If ID <= 9 Then
textColor = vbBlack
Else
If ID Mod 10 >= 4 Then
textColor = vbWhite
Else
textColor = vbBlack
End If
End If
End Function
谢谢!这非常有帮助。我在几节中添加了处理文本颜色的方法,但是这种方式完全按照预期工作。空单元也有一个小小的缺陷 - 一个简单的如果/然后阻止它变黑。 –
您能否建议编辑,以便每个人都可以看到更改。谢谢! – UGP
这可能是一个很好的电话。在这个网站上接受的方法是什么? –