Excel数据验证:更改填充颜色而不更改文本

时间:2015-04-06 05:42:29

标签: excel excel-vba validation vba

我有一个大约50个资源的平面图,需要标记为可用,保留或占用。我选择为每个资源使用数据验证单元格下拉列表。是否可以将文本保留在数据验证单元格中,使用源作为下拉选项,并根据选择更改填充颜色?这可能很难理解,所以我将提供一个例子。

给出示例:

A1:A3是可用,保留和占用的来源。

单元格D3:可用,保留和占用作为下拉列表,填充颜色将分别变为绿色,橙色或红色,并将文本保留在单元格中。

3 个答案:

答案 0 :(得分:0)

首先,使用数据验证根据单元格D3中单元格A1:A3(可用,保留和占用)中的值创建列表。

然后,使用条件格式通过“使用公式确定要格式化的单元格”来设置三个规则。每种颜色都需要一个,即。

=$D$3="Available" - Applies to: =$D$3 - Format: Green fill
=$D$3="Reserved" - Applies to: =$D$3 - Format: Orange fill
=$D$3="Occupied" - Applies to: =$D$3 - Format: Red fill

答案 1 :(得分:0)

您可以使用条件格式来实现相同的目标。下面给出的示例使用 MS-Excel 2007

假设您在D3(或多个单元格)中已存在下拉列表,请选择需要格式化的单元格(或多个单元格)。

主页标签中 - >转到条件格式选项 - >选择突出显示细胞规则 - > 等于选项。将打开一个对话框,如下图所示。输入您需要的单元格引用和所需格式(例如Available为$ A $ 1),然后点击确定

enter image description here

ReservedOccupied重复相同的格式。

答案 2 :(得分:0)

首先放置ComboBox控件并将.visible属性设置为false。使用.AddItem方法添加Available等。到它的清单。我想你想要下面的东西。

Private mrngMyRange As Range

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 4 Then 'This restricts the sensitive range to column `D`
        ComboBox1.Visible = True
        ComboBox1.Left = Target.Left
        ComboBox1.Top = Target.Top
        Set mrngMyRange = Target
        ComboBox1.Select
    Else
        ComboBox1.Visible = False
    End If
End Sub

Private Sub ComboBox1_Change()
    'mrngMyRange.Value = ComboBox1.Text

    If ComboBox1.Text = "Available" Then
        mrngMyRange.Cells(1, 1).Interior.ColorIndex = 4
    ElseIf ComboBox1.Text = "Reserved" Then
        mrngMyRange.Cells(1, 1).Interior.ColorIndex = 46
    ElseIf ComboBox1.Text = "Occupied" Then
        mrngMyRange.Cells(1, 1).Interior.ColorIndex = 3
    End If

    ComboBox1.Visible = False
End Sub