我目前有一个用户表单,其中加载了三个命令按钮(主要、次要和第三)。这里的想法是用户将使用这三个按钮选择自己的配色方案。
我的工作簿中有代表每种颜色的单元格,然后有一个宏,在运行时将所有图表对象设置为这些颜色(使用单元格)。
我已成功初始化用户窗体,以便三个命令按钮的内部颜色由工作簿中的三个单元格确定:
Private Sub UserForm_Initialize()
Dim cs As Worksheet
Set cs = Sheets("ColourScheme")
TextBox1.SetFocus '' Shift focus away from primary
Primary.BackColor = cs.Range("B1").Interior.color
Secondary.BackColor = cs.Range("B2").Interior.color
Tertiary.BackColor = cs.Range("B3").Interior.color
End Sub
我现在想做的是,当单击每个按钮时,调色板会加载,用户使用滚轮或 RGB 数字选择颜色,最后是工作簿中的单元格和命令按钮的内部颜色根据用户的选择进行更改。
我不知道这是否可以完成,但到目前为止我尝试加载调色板的任何事情都没有运气:
Private Sub Primary_Click()
Application.Dialogs.Item(xlDialogColorPalette).Show
End Sub
最佳答案
尝试我在多个应用程序上使用的函数,它经过稍微转换以适合您的原始最小化代码,让我知道它是否适合您...
Private Sub Primary_Click()
Const ColorIndexLast As Long = 32 'index of last custom color in palette
Dim PickNewColor As Double 'color that was picked in the dialogue
Dim myOrgColor As Double 'original color of color index 32
'save original palette color,modify Range according to your needs
myOrgColor = Range("A1").Interior.Color
'call the color picker dialogue
If Application.Dialogs(xlDialogEditColor).Show(ColorIndexLast) = True Then
' "OK" was pressed, read the new color from the palette
PickNewColor = ActiveWorkbook.Colors(ColorIndexLast)
ActiveWorkbook.Colors(ColorIndexLast) = myOrgColor ' reset palette color to its original value
Else
' "Cancel" was pressed, palette wasn't changed >> return old color (or xlNone if no color was passed to the function)
PickNewColor = myOrgColor
End If
' update Colors in relevant Cell
Range("A1").Interior.Color = PickNewColor
End Sub
关于vba - 使用命令按钮更改单元格颜色(VBA Excel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39248907/