我在excel中使用的用户定义函数
Function Hex2RGB(hex As String) As String
Red = Val("&H" & Mid(hex, 1, 2))
Green = Val("&H" & Mid(hex, 3, 2))
Blue = Val("&H" & Mid(hex, 5, 2))
Debug.Print RGB(Red, Green, Blue)
Hex2RGB = RGB(Red, Green, Blue)
End Function
我有一个10倍10矩阵的工作表,该函数需要用于该范围内的每个单元格。必须有一些方法,我不必点击每个单元格并手动输入= Hex2RGB("值")? 当我写价值时,我指的是像OD62A2 ......这是颜色而不是以excel格式转换
答案 0 :(得分:0)
使用范围参数代替值,如下所示。手动将函数设置为第一个单元格(例如矩阵中的左上单元格),然后将其复制并粘贴到矩阵中 - 范围将更改
Public Function Hex2RGB(r As Range) As String
Dim hex As String: r.Value
Red = Val("&H" & Mid(hex, 1, 2))
Green = Val("&H" & Mid(hex, 3, 2))
Blue = Val("&H" & Mid(hex, 5, 2))
Debug.Print RGB(Red, Green, Blue)
Hex2RGB = RGB(Red, Green, Blue)
End Function
答案 1 :(得分:0)
第1步:添加以下宏。这个宏将迭代所选范围内的单元格,并根据自己的值替换它们,我认为这是你想要做的。
Sub GetHexValues()
Dim rng as Range
Dim cl as Range
Set rng = Range(Selection.Address)
For each cl in rng.Cells
cl.Formula = "=Hex2RGB(" & Chr(34) & cl.Value & Chr(34) & ")"
Next
End Sub
第2步确保您的功能是:
Public Function Hex2RGB(hex) As String
Red = Val("&H" & Mid(hex, 1, 2))
Green = Val("&H" & Mid(hex, 3, 2))
Blue = Val("&H" & Mid(hex, 5, 2))
Debug.Print RGB(Red, Green, Blue)
Hex2RGB = RGB(Red, Green, Blue)
End Function
第3步: 选择矩阵范围。 (注意:通常我建议不要使用Select
但是作为用户输入的一种方式,我认为这样做是可以的。)
一般来说,没有办法使用UDF工作表函数以您描述的方式操作一系列单元格。 UDF通常不能改变单元格/范围的许多属性和值,除了调用该函数的单元格。这是为了避免循环引用/等。 (这个限制有变通方法,但通常接受的规则是使用子程序来操作工作表对象。)