VBA编程中的颜色变换

VBA编程中的颜色变换,第1张

1首先请到网上下个VBA timer 控件并把里面的“ocx”文件放到C盘-windows-system32文件夹下,然后开始-运行-“regsvr32 VBAtimerocx”-确定(注:这里假设你下的的OCX文件名为“VBAtimerocx”)。

2然后打开excel,按照你自己的要求建立窗体,然后在工具栏上点右键-“附加控件”-找到刚刚装的VBAtimer控件然后在窗体任意地方画一个timer控件。

3然后在新建的窗体上右键-“查看代码”,并输入以下代码:

Private Sub CommandButton1_Click()

UserForm1Label1FontBold = True

UserForm1Label1FontItalic = True

Timer1Interval = 500

Timer1Enabled = True

End Sub

Sub timer1_timer()

Dim a As Long, b As Long, c As Long

Randomize

a = Int(256 Rnd )

b = Int(256 Rnd )

c = Int(256 Rnd )

UserForm1Label1ForeColor = RGB(a, b, c)

End Sub

Private Sub CommandButton2_Click()

UserForm1Label1FontBold = False

UserForm1Label1FontItalic = False

Timer1Enabled = False

End Sub

4最后在在工程管理窗口上双击Thisworkbook,在d出的代码框输入以下代码:

Private Sub Workbook_Open()

UserForm1Show

End Sub

5附:如果2、3、4步不知道做的话,做完第一步然后把邮箱留给我。

编写代码的时候,颜色的代码有多种格式,如RGB(255,255,255)对应CMYK(0,0,0,0)对应#ffffff(HEX格式),那么,这三者间要如何转换呢?

工具/原料

Photoshop

RGB

1

定义

RGB是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的(来自百度百科)

2

代码格式

RGB代码的表现形式为(x,x,x),其中0≤x≤255

如(0,0,0)代表红绿蓝数值均为0,也就是黑色。

END

CMYK

1

定义及与RGB的区别

C(青)M(洋/品红)Y(黄)K(黑),CMYK也称作印刷色彩模式。

屏幕上显示的图像,是RGB模式呈现的,而印刷品上的图像,是CMYK模式表现的。

2

格式

CMYK代码的表现形式为(x,x,x,x),其中0≤x≤100,这里的x是一种百分值。

如白色的CMYK格式是(0,0,0,0)

END

Hex code

Hex code的格式为#+六位数字/字母,如纯蓝色是#0000FF

END

数值转换方法

1

知道了三类颜色码中的任一种,如何换算成另外两种,这里推荐使用Photoshop或者AI等设计软件,本文以ps为例。

2

打开ps,点击文件-新建,新建一个任意尺寸的画板。

3

然后选择编辑-填充

4

d出的对话框里内容选项选择“颜色…”

5

调色板如图所示位置,分别对应RGB、CMYK和hex的数值

6

例如要把RGB(200,100,0)转换成CMYK,就在RGB区域对应输入这三个数值,之后CMYK版块显示的就是其对应的CMYK数值(27,71,100,0)

望采纳!

你需要完全什么样的功能,详细补充完整!!!代码有点累赘

为什么要用For M = LBound(COLORARR) To UBound(COLORARR)这个循环

这个循环的意思是M从0循环到7,而不是从colorarr数组中取颜色值

如果想从数组中取值,改成for each M in colorarr就可以

上面改了之后的循环,配合if Range("N" & J)InteriorColorIndex = M then可以理解为是需要所有这些颜色的单元格

如果仅仅是想找出所有这些颜色的单元格,不需要这个循环,可以改成:

if "-" & join(colorarr,"-") & "-" like "-" & Range("N" & J)InteriorColorIndex & "-" then

这样,直接根据单元格颜色在数组中匹配

后面的形状变更颜色可以用ForeColorIndex=Range("N" & J)InteriorColorIndex就好了

代码:

Sub 标色()

  Dim nR As Long, iR As Range, S As String, C As String

  Dim B As Boolean, i, j

  nR = Range("A65535")End(xlUp)Row

  Range("A1:A" & nR)InteriorColorIndex = 0

  For Each iR In Range("A1:A" & nR)

      S = iRValue

      C = Mid(S, 2, 1)

      If Len(Replace(S, C, "")) = Len(S) - 3 Then

          '先判断第二个数出现了三次,再确定间隔是否符合要求

          B = False

          j = 3

          For i = 1 To 2

              If InStr(j, S, C) - j > 4 Then

                  j = InStr(j, S, C) + 1

              Else

                  B = True

              End If

          Next i

          If Not B Then iRInteriorColor = RGB(255, 0, 0)

      End If

  Next

End Sub

以上就是关于VBA编程中的颜色变换全部的内容,包括:VBA编程中的颜色变换、求HEX色值转CMYK/HSL/HSB值的VBA代码、插入的形状的颜色与单元格颜色相同 求VBA代码或更改我的VBA代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10159074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存