2017-05-09 116 views
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 

回答

0

將在Sheet該代碼通過打開與ALT編輯+ F11:

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)檢查用戶輸入單元(1000,1000),然後它抓住了顏色從Sheet2的地方,我把你這個樣子(複製和粘貼表)鏈接AutoCAD的表:

enter image description here

+0

謝謝!這非常有幫助。我在幾節中添加了處理文本顏色的方法,但是這種方式完全按照預期工作。空單元也有一個小小的缺陷 - 一個簡單的如果/然後阻止它變黑。 –

+0

您能否建議編輯,以便每個人都可以看到更改。謝謝! – UGP

+0

這可能是一個很好的電話。在這個網站上接受的方法是什麼? –