内容中AutoCAD颜色的Excel单元格颜色

内容中AutoCAD颜色的Excel单元格颜色,excel,vba,colors,autocad,Excel,Vba,Colors,Autocad,我希望的输出类似于此页:,但在Excel中 我们要做的是将AutoCAD颜色绑定到单元格。我希望能够在单元格中输入颜色编号(例如颜色10,红色),并将单元格更改为该颜色。我不知道不做宏怎么做。我想它将是某种类型的VBA 我从上面的站点得到了RGB等价物——我想我可以进行某种类型的查找 我意识到这可以通过一些特别讨厌的条件格式来实现,但我更喜欢一些更精简的格式 帮忙 编辑:UGP提供了一些非常好的代码,这些代码正好满足了我的需要。这是我最后使用的代码(针对我的工作表命名进行了调整,并添加了一些附加

我希望的输出类似于此页:,但在Excel中

我们要做的是将AutoCAD颜色绑定到单元格。我希望能够在单元格中输入颜色编号(例如颜色10,红色),并将单元格更改为该颜色。我不知道不做宏怎么做。我想它将是某种类型的VBA

我从上面的站点得到了RGB等价物——我想我可以进行某种类型的查找

我意识到这可以通过一些特别讨厌的条件格式来实现,但我更喜欢一些更精简的格式

帮忙

编辑:UGP提供了一些非常好的代码,这些代码正好满足了我的需要。这是我最后使用的代码(针对我的工作表命名进行了调整,并添加了一些附加功能)

Private子工作表\u更改(ByVal目标作为范围)
暗淡的关键单元格作为范围
设置关键单元格=范围(单元格(1,6),单元格(1000,6))
如果不是应用程序.Intersect(关键单元格,范围(目标地址))_
那就什么都不是了
CellChanged=Target.Address'已更改的单元格
如果是数字(工作表(“主”)范围(CellChanged).Value),则
如果工作表(“主”).Range(CellChanged).Value=0,则
工作表(“主”).Range(CellChanged).Interior.ColorIndex=xlNone
工作表(“主控”).Range(CellChanged).Font.Color=vbBlack
其他的
工作表(“主控”)。范围(CellChanged)。内饰颜色=
颜色(工作表(“主”)。范围(单元格更改)。值)
工作表(“主控”)。范围(CellChanged)。Font.Color=
textColor(工作表(“主”).范围(CellChanged).值)
如果结束
如果结束
如果结束
端接头
函数颜色(ByRef ID为整数)的长度
将R、G、B作为整数
对于i=3到257
如果ID=工作表(“颜色”)。单元格(i,1)。则为
R=工作表(“颜色”)。单元格(i,2)。值
G=工作表(“颜色”)。单元格(i,3)。值
B=工作表(“颜色”)。单元格(i,4)。值
颜色=RGB(R、G、B)
退出
如果结束
接下来我
端函数
函数textColor(ByRef ID为整数)的长度
如果ID=4,则
textColor=vbWhite
其他的
textColor=vbBlack
如果结束
如果结束
端函数

使用alt+f11打开编辑器,将此代码放入Sheet1:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    Set KeyCells = Range(Cells(1, 1), Cells(1000, 1000))

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

       CellChanged = Target.Address 'Cell that changed
       If IsNumeric(Worksheets("Sheet1").Range(CellChanged).Value) Then
        Worksheets("Sheet1").Range(CellChanged).Interior.Color = Color(Worksheets("Sheet1").Range(CellChanged).Value)
       End If
    End If
End Sub

Function Color(ByRef ID As Integer) As Long
Dim R, G, B As Integer
    For i = 2 To 256
        If ID = Worksheets("Sheet2").Cells(i, 4).Value Then
            R = Worksheets("Sheet2").Cells(i, 5).Value
            G = Worksheets("Sheet2").Cells(i, 6).Value
            B = Worksheets("Sheet2").Cells(i, 7).Value
            Color = RGB(R, G, B)
            Exit For
        End If
    Next i
End Function
它将检查从单元格(1,1)到单元格(10001000)的用户输入,然后从Sheet2中获取颜色,我将在其中放置您链接的autocad表格,如下所示(复制并粘贴表格):


谢谢!这非常有帮助。我还添加了几个部分来处理文本颜色,但这完全符合预期。空单元格也有一个小错误-简单的if/then阻止它变黑。你能建议编辑一下吗,这样每个人都能看到更改。谢谢那可能是个好电话。在这个网站上做这件事的公认方法是什么?在我的帖子下面应该有一个按钮“建议编辑”,然后用你的代码替换我的代码,否则就用你的代码发表评论,我会编辑我的帖子。编辑队列似乎满了,而且评论太长了。我将编辑我的原始问题。
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    Set KeyCells = Range(Cells(1, 1), Cells(1000, 1000))

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

       CellChanged = Target.Address 'Cell that changed
       If IsNumeric(Worksheets("Sheet1").Range(CellChanged).Value) Then
        Worksheets("Sheet1").Range(CellChanged).Interior.Color = Color(Worksheets("Sheet1").Range(CellChanged).Value)
       End If
    End If
End Sub

Function Color(ByRef ID As Integer) As Long
Dim R, G, B As Integer
    For i = 2 To 256
        If ID = Worksheets("Sheet2").Cells(i, 4).Value Then
            R = Worksheets("Sheet2").Cells(i, 5).Value
            G = Worksheets("Sheet2").Cells(i, 6).Value
            B = Worksheets("Sheet2").Cells(i, 7).Value
            Color = RGB(R, G, B)
            Exit For
        End If
    Next i
End Function