VBA - использовать цвет, уже выбранный в Excel, чтобы заполнить внутреннюю часть ячейки - PullRequest
4 голосов
/ 16 августа 2011

Я знаю, как установить для внутреннего цвета ячейки определенный цвет, но есть ли способ сделать это так, чтобы он (т. Е. Цвет ячейки) по умолчанию соответствовал цвету, уже выбранному в цветовом окне ленты

Ответы [ 3 ]

3 голосов
/ 04 апреля 2014

Я подхожу к этому очень поздно, но так как он появился в поиске Google для чего-то другого, я подумал, что упомяну выбранный ответ неверный, когда он говорит, что вы не можете делать то, что хотел отправитель.Вы можете активировать элемент управления непосредственно с помощью ...

Application.CommandBars.ExecuteMso "CellFillColorPicker"

... и он применит текущий выбранный цвет к выбранному диапазону.

Я на самом деле смотрю вокруг, чтобы увидеть, еслиесть способ выбрать другой цвет в галерее элемента управления через VBA, поэтому при первом открытии рабочей книги я могу сделать по умолчанию "не заполнять", а не желтый.

1 голос
/ 05 декабря 2018

Вы можете получить текущий выбранный, но я бы хотел, чтобы это было проще ..

Это пример его захвата на основе кода, предоставленного @ 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
0 голосов
/ 17 августа 2011

Боюсь, что вы не можете

В любом случае, вы можете использовать собственную палитру, используя этот код:

Модуль modColorFunctions содержит функцию с именем ChooseColorDialog, которая будет отображатьДиалоговое окно Windows Color Picker и возвращает значение цвета 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

Вам необходимо добавить цветовой модуль чтобы заставить это работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...