VBA - 使用颜色已在Excel中选择以填充单元格内部

时间:2011-08-16 19:08:54

标签: colors excel-vba vba excel

我知道如何将单元格的内部颜色设置为某种颜色,但有没有办法让它(即单元格颜色)默认为已在色带的颜色窗口中选择的颜色?

3 个答案:

答案 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才能使其正常工作