[英]use a udf in vba excel for multiple cells
我在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(“ value”)吗? 当我写值时,我指的是诸如OD62A2之类的东西。
使用范围参数而不是如下所示的值。 手动将功能设置到第一个单元格(例如,矩阵的左上单元格),然后将其复制并粘贴到矩阵中-范围将更改
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:添加以下宏。 该宏将在选定范围内的单元格上进行迭代,并使用基于其自身值的公式替换它们,我认为这是您要尝试执行的操作。
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通常不能更改单元格/范围的许多属性和值。 这是为了避免循环引用等。 (有解决此限制的方法,但是通常公认的规则是使用子例程来处理工作表对象)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.