Excel 用户只能从选择的颜色中填充单元格

问题描述 投票:0回答:2

我正在尝试使一组数据中的选择单元格只能填充 4 种预选颜色中的一种。有点像下拉菜单列表,但用于填充颜色。

我们有一个大约 9 人的团队同时处理一个 excel 文件。时间是最重要的,我们的一些交流和相互输入是用颜色填充选择数据。

由于有很多颜色可供选择,我们会得到奇怪的色调组合,阻碍我们的生产。

有没有办法将填充颜色限制为仅预选组?

我只研究了数据验证下拉菜单,因为这是我有限的知识唯一能想到的。

随着数据变量和形式的变化范围,还没有找到可以进行条件格式化的方法。通过我们的流程,数据可以保持不变,但我们会通过颜色来判断数据是否有效并准备就绪。用户需要能够任意更改单元格颜色。

不幸的是,我还没有接近我一直在寻找的东西。

excel colors limit fill
2个回答
0
投票

在颜色为单词的列上使用数据验证,然后使用条件格式设置颜色。


0
投票

将其放入工作表模块中:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Dim StrColorbox01Name As String
    Dim StrColorbox02Name As String
    Dim StrColorbox03Name As String
    Dim StrColorbox04Name As String
    Dim ObjColorbox01 As Object
    Dim ObjColorbox02 As Object
    Dim ObjColorbox03 As Object
    Dim ObjColorbox04 As Object
    
    StrColorbox01Name = "ObjCB01"
    StrColorbox02Name = "ObjCB02"
    StrColorbox03Name = "ObjCB03"
    StrColorbox04Name = "ObjCB04"
    
    On Error Resume Next
    Set ObjColorbox01 = Me.Shapes(StrColorbox01Name)
    On Error GoTo 0
    
    If ObjColorbox01 Is Nothing Then
        With Me.Shapes
            
            Set ObjColorbox01 = .AddShape(msoShapeRectangle, 0, 0, 15, 15)
            Set ObjColorbox02 = .AddShape(msoShapeRectangle, ObjColorbox01.Left + ObjColorbox01.Width, ObjColorbox01.Top, ObjColorbox01.Width, ObjColorbox01.Height)
            Set ObjColorbox03 = .AddShape(msoShapeRectangle, ObjColorbox02.Left + ObjColorbox02.Width, ObjColorbox02.Top, ObjColorbox02.Width, ObjColorbox02.Height)
            Set ObjColorbox04 = .AddShape(msoShapeRectangle, ObjColorbox03.Left + ObjColorbox03.Width, ObjColorbox03.Top, ObjColorbox03.Width, ObjColorbox03.Height)
            
            ObjColorbox01.Name = StrColorbox01Name
            ObjColorbox02.Name = StrColorbox02Name
            ObjColorbox03.Name = StrColorbox03Name
            ObjColorbox04.Name = StrColorbox04Name
            
            ObjColorbox01.DrawingObject.Interior.Color = RGB(255, 0, 0)
            ObjColorbox02.DrawingObject.Interior.Color = RGB(0, 255, 0)
            ObjColorbox03.DrawingObject.Interior.Color = RGB(0, 0, 255)
            ObjColorbox04.DrawingObject.Interior.Color = RGB(255, 255, 0)
            
            ObjColorbox01.OnAction = "SubColor01"
            ObjColorbox02.OnAction = "SubColor02"
            ObjColorbox03.OnAction = "SubColor03"
            ObjColorbox04.OnAction = "SubColor04"
            
            
        End With
    Else
        
        Set ObjColorbox02 = Me.Shapes(StrColorbox02Name)
        Set ObjColorbox03 = Me.Shapes(StrColorbox03Name)
        Set ObjColorbox04 = Me.Shapes(StrColorbox04Name)
        
    End If
    
    ObjColorbox01.Top = Target.Cells(1, 1).Top + Target.Cells(1, 1).Height
    ObjColorbox01.Left = Target.Cells(1, 1).Left + Target.Cells(1, 1).Width
    
    ObjColorbox02.Top = ObjColorbox01.Top
    ObjColorbox02.Left = ObjColorbox01.Left + ObjColorbox01.Width
    ObjColorbox03.Top = ObjColorbox02.Top
    ObjColorbox03.Left = ObjColorbox02.Left + ObjColorbox02.Width
    ObjColorbox04.Top = ObjColorbox03.Top
    ObjColorbox04.Left = ObjColorbox03.Left + ObjColorbox03.Width
    
End Sub

把这个放在公共模块中:

Sub SubColor01()
    
    Selection.Interior.Color = ActiveSheet.Shapes("ObjCB01").DrawingObject.Interior.Color
    
End Sub
Sub SubColor02()
    
    Selection.Interior.Color = ActiveSheet.Shapes("ObjCB02").DrawingObject.Interior.Color
    
End Sub
Sub SubColor03()
    
    Selection.Interior.Color = ActiveSheet.Shapes("ObjCB03").DrawingObject.Interior.Color
    
End Sub
Sub SubColor04()
    
    Selection.Interior.Color = ActiveSheet.Shapes("ObjCB04").DrawingObject.Interior.Color
    
End Sub

现在矩形总是可见的,但稍加编辑就可以使它们仅在特定条件下出现。

主要优点:您可以根据需要选择多个范围,只需点击一下即可更改它们的填充物,您需要选择想要的范围加一个。

© www.soinside.com 2019 - 2024. All rights reserved.