2017-08-21 258 views
-1

我想根據我在另一個單元格中確定的單元格的值填充單元格。VBA根據單元格數量更改單元格的顏色

例如,

  • 如果我把A33="5"然後填寫綠5個細胞用C柱。
  • 如果A34="10"則同時填充C列中的另外10個單元格。

當我更改值,然後我希望C列中的單元格的數量和顏色將相應地改變。

我分享了一個樣本圖片作爲附件。如果可以使用VBA?

Sample Sheet

+1

查找到條件格式;它使用Excel標準工具,而不是要求VBA。如果需要VBA,則可以通過VBA輸入條件格式。如果不需要條件格式化,另一種選擇是使用VBA中的Change_Events。 – Cyril

+2

是的,這是可能的。 – Luuklag

+1

任何你不只是使用堆疊條形圖的理由? –

回答

0

這適用於列A〜F.

表事件代碼

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Count > 1 Then Exit Sub 
    If Not Intersect(Range("a33", "f36"), Target) Is Nothing Then 
     setColor Target.Column 
    End If 
End Sub 

模塊代碼

Sub setColor(col As Integer) 
    Dim vDB, vColor 
    Dim i As Integer, c As Integer, n As Integer 

    vColor = Array(RGB(244, 185, 79), RGB(0, 180, 255), RGB(255, 54, 54), RGB(116, 211, 109)) 
    Range(Cells(1, col), Cells(32, col)).Interior.Color = RGB(36, 36, 36) 
    vDB = Cells(33, col).Resize(4) 
    For i = 1 To 4 
     n = vDB(i, 1) 
     c = c + n 
     If IsEmpty(vDB(i, 1)) Then 
     Else 
      Cells(32, col).Offset(-c, 0).Resize(n).Interior.Color = vColor(i - 1) 
     End If 
    Next i 

End Sub 

enter image description here

+0

,感謝您的支持。非常感謝 –

+0

@SemihUral,祝你好運。 –

+0

,非常感謝。順便說一句,我想增加數量,讓我們假設我把它放在100個A33它會帶給我調試。爲了避免是和如果我需要使用100,我需要修改哪些部分? –

0
Sub setColor(col As Integer) 
    Dim vDB, vColor 
    Dim i As Integer, c As Integer, n As Integer 

    vColor = Array(RGB(244, 185, 79), RGB(0, 180, 255), RGB(255, 54, 54), RGB(116, 211, 109)) 
    Range(Cells(1, col), Cells(50, col)).Interior.Color = RGB(36, 36, 36) 
    vDB = Cells(51, col).Resize(4) 
    For i = 1 To 10 
     n = vDB(i, 1) 
     c = c + n 
     If IsEmpty(vDB(i, 1)) Or c > 49 Then 
     Else 
      Cells(50, col).Offset(-c, 0).Resize(n).Interior.Color = vColor(i - 
     End If 
    Next i 

End Sub 
0

子的setColor(COL作爲整數) 昏暗VDB,vColor 昏暗我作爲整數,c以整數,n作爲整數

vColor = Array(RGB(244, 185, 79), RGB(0, 180, 255), RGB(255, 54, 54), RGB(116, 211, 109)) 
Range(Cells(1, col), Cells(50, col)).Interior.Color = RGB(36, 36, 36) 
vDB = Cells(51, col).Resize(4) 
For i = 1 To 4 '<~~ your if your range is "a51,f56", then it sould be 4 
n = vDB(i, 1) 
    c = c + n 
    If IsEmpty(vDB(i, 1)) Or c > 49 Then 
    Else 
     Cells(50, col).Offset(-c, 0).Resize(n).Interior.Color = vColor(i - 1) 
    End If 
Next i 

結束子

相關問題