我正在尝试使一组数据中的选择单元格只能填充 4 种预选颜色中的一种。有点像下拉菜单列表,但用于填充颜色。
我们有一个大约 9 人的团队同时处理一个 excel 文件。时间是最重要的,我们的一些交流和相互输入是用颜色填充选择数据。
由于有很多颜色可供选择,我们会得到奇怪的色调组合,阻碍我们的生产。
有没有办法将填充颜色限制为仅预选组?
我只研究了数据验证下拉菜单,因为这是我有限的知识唯一能想到的。
随着数据变量和形式的变化范围,还没有找到可以进行条件格式化的方法。通过我们的流程,数据可以保持不变,但我们会通过颜色来判断数据是否有效并准备就绪。用户需要能够任意更改单元格颜色。
不幸的是,我还没有接近我一直在寻找的东西。
将其放入工作表模块中:
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
现在矩形总是可见的,但稍加编辑就可以使它们仅在特定条件下出现。
主要优点:您可以根据需要选择多个范围,只需点击一下即可更改它们的填充物,您需要选择想要的范围加一个。