在Excel中如何根据另一个单元格背景颜色更新单元格值

时间:2015-09-04 09:18:05

标签: excel vba excel-vba conditional-formatting

我有一个尴尬的excel问题,我认为需要一些VBA。我对VBA有很好的了解但是这让我很难过。

我有条件格式,检查A列中给出的%,根据此值填充单元格的某种颜色,例如用户可以输入50%,这将填充下面的一半单元格,

enter image description here

现在我的老板希望它反过来如此,如果他自己填充一个单元格的颜色,它会以50%的比例填充%列,例如

提前致谢

Benjiii

1 个答案:

答案 0 :(得分:1)

您可以使用技巧来完成此任务。由于Excel VBA不提供捕获范围颜色更改事件的事件,因此您需要其他东西来触发代码。您可以通过将颜色单元格绑定到列表验证并仅允许“”(null)和“OK”值来实现此目的。没有文本可见,因为我们将使文本与背景颜色相同,但您可以捕获更改事件。用户可以从列表中选择“”或“确定”。这是代码:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rowStart As Integer
Dim rowEnd As Integer
Dim colStart As Integer
Dim colEnd As Integer
  rowStart = 3  'insert correct values according to your sheet
  rowEnd = 10
  colStart = 2
  colEnd = 7
  With Target
    If .Count = 1 Then
      .Font.Color = .Interior.Color
      If .Row >= rowStart And .Row <= rowEnd And .Column >= colStart And .Column <= colEnd Then
        If Target = " " Then
          Cells(.Row, colStart - 1) = (.Column - colStart + 1) / (colEnd - colStart + 1)
        Else
          Worksheet_Change Target.Offset(, -1)
        End If
      End If
    End If
  End With
End Sub