我知道如何将单元格的内部颜色设置为某种颜色,但有没有办法让它(即单元格颜色)默认为已在色带的颜色窗口中选择的颜色?
答案 0 :(得分:3)
我已经很晚才这么做了,但是因为它在谷歌搜索中出现了其他东西,我想我会提到所选答案是不正确的,因为它说你不能做提交者想要的东西。您可以直接使用...
激活控件Application.CommandBars.ExecuteMso "CellFillColorPicker"
...它会将当前选定的颜色应用于所选范围。
我实际上是在寻找是否有办法通过VBA在控件库中选择另一种颜色,这样我可以在首次打开工作簿时默认为“无填充”而不是黄色。
答案 1 :(得分:1)
您可以获得当前选择的内容,但我希望它更容易。
这是根据@justpassingthrough提供的代码捕获它的示例。
代替Debug.print,您可以将值保存到全局变量中吗?
Sub HiddenSheetGetColor()
Application.ScreenUpdating = False ' :: STOP SCREEN FLASHES
Dim HiddenSheetName As String ':: VARIABLE TO SHEET NAME
HiddenSheetName = Format(Now(), "__YYYYMMDD_HH_MM_SS_.00") ' TIMESTAMP FOR SHEET SO IT'LL NEVER DUPLICATE
Worksheets.Add.Name = HiddenSheetName ' CREATE NEW SHEET AND SET NAME TO TIMESTAMP REFERENCED ABOVE
Sheets(HiddenSheetName).Select 'SELECT IT
Range("A1").Select 'SELECT A CELL
Application.CommandBars.ExecuteMso "CellFillColorPicker" ' APPLY CURRENT TOOLBAR 'FILL' COLOUR TO CELL
Debug.Print Range("A1").Interior.Color ' :: PRINT THIS VALUE TO LOG/IMMEDIATE WINDOW ::
Application.DisplayAlerts = False ' :: STOP ERROR WHEN DELETING SHEET
Sheets(HiddenSheetName).Delete ' :: DELETE SHEET
Application.DisplayAlerts = True ' :: ALLOW ERROR WHEN DELETING SHEET
Application.ScreenUpdating = True ' :: UPDATE SCREEN AGAIN!
End Sub
答案 2 :(得分:0)
我担心你不能
无论如何,您可以使用以下代码使用自定义调色板:
modColorFunctions模块包含一个名为的函数 ChooseColorDialog将显示Windows颜色选择器对话框和 返回RGB Long颜色值。如果用户取消对话框,则 结果是-1。例如,
Dim RGBColor As Long
Dim Default As Long
Default = RGB(255, 0, 255) 'default to purple
RGBColor = ChooseColorDialog(DefaultColor:=Default)
If RGBColor < 0 Then
Debug.Print "*** USER CANCELLED"
Else
Debug.Print "Choice: " & Hex(RGBColor)
End If
摘自http://www.cpearson.com/Excel/Colors.aspx的显示拾色器对话框一章
您需要添加color module才能使其正常工作