标签:VBA
这是在网上看到的一段代码,辑录于此,供有兴趣的朋友参考。
有人问:如何根据单元格的背景色确定单元格字体是黑色还是白色?也就是说,如果单元格背景色是白色,那么字体就是黑色;反之,如果单元格背景色是黑色,那么字体就是白色。
下面是解决这个问题的VBA程序,很酷的算法!
Sub SetFontColor()
Dim cell As Range
For Each cell In Selection
cell.Font.Color = BorW(cell.Interior.Color)
Next cell
End Sub
Function BorW(RGB As Long) As Long
Dim R As Integer, G As Integer, B As Integer
R = (RGB And &HFF)
G = (RGB And &HFF00&) / 256
B = (RGB And &HFF0000) / 65536
BorW = vbWhite
If R * 0.3 + G * 0.59 + B * 0.11 > 128 Then BorW = vbBlack
End Function
亮度公式:
R * 0.3 + G * 0.59 + B * 0.11 = L
这是“亮度”或颜色亮度的公式,常用于将颜色转换为灰度。
选择要设置字体颜色的单元格区域,运行SetFontColor过程即可。