gpt4 book ai didi

excel - 在 VBA 中创建颜色矢量

转载 作者:行者123 更新时间:2023-12-02 11:52:44 24 4
gpt4 key购买 nike

我想检查多年的数据表以找到特定颜色的单元格。

人类多年来并没有始终如一地选择相同的细胞颜色(它们对于人眼来说可能都是相同的,但具有不同的 RGB 值)。

如果我有一个内部颜色为 RGB(255,23,50) 的单元格,有没有办法创建一个颜色向量来查看单元格的内部颜色是否落在它上面?我希望创建一个具有 +/- 15 RGB 点的向量,因此,如果我正在搜索具有 RGB(255,23,50) 的单元格,我想要一个介于 RGB(255,38,65) 和 RGB(240,8) 之间的向量,35)。

我可以使用 IF 语句来查看颜色是否落在这两个值之间,但我可以将颜色向量用于更多应用程序(如果需要更改代码,修改起来会更容易)。

这个 if 语句有效:

If ActiveWorkbook.Worksheets("Sheet1").Range("e5").Interior.Color >= RGB(240, 8, 35) And ActiveWorkbook.Worksheets("Sheet1").Range("e5").Interior.Color <= RGB(255, 38, 65) Then
MsgBox ("yes")
Else
MsgBox ("no")
End If

我正在寻找更多类似的东西:

dim redVector as long ' or other appropriate variable type

' ***** code that defines the red vector *****

if range("e5").interior.color = redVector then
' do stuff
end if

最佳答案

这应该做:

Function IsInVector(srcColor, newColor, lOffset As Long) As Boolean

Dim lSrcColor As Long
Dim lNewColor As Long
Dim lTemp As Long

lSrcColor = CLng(srcColor)
lNewColor = CLng(newColor)

lTemp = (lSrcColor - lNewColor) / 65536
lTemp = Abs(Round(lTemp, 0))

If lOffset <> lTemp Then
IsInVector = False
Else
IsInVector = True
End If

End Function

'/ Example usage::::
Sub test()

Debug.Print IsInVector(RGB(255, 23, 50), RGB(255, 38, 65), 15) '~~~> True
Debug.Print IsInVector(RGB(255, 23, 50), RGB(255, 43, 63), 15) '~~~> False
Debug.Print IsInVector(RGB(255, 23, 50), RGB(255, 38, 65), 15) '~~~> True

End Sub

关于excel - 在 VBA 中创建颜色矢量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41699348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com