excel - 如何使 Excel 用户定义函数 (UDF) 接受字符串类型和范围类型的参数?
问题描述
我正在尝试创建一个函数do_something_to_string(one_arg)
,其中 one_arg 可以是字符串类型或范围。
在范围的情况下,我想将该范围的每个单元格连接成一个长字符串,但要进行处理。但我似乎无法制作一个可以接受字符串或 Range 作为参数的函数。
解决方案
使用可选参数或变体:
Function MyFunction1(Optional Str As String, Optional Rng As Range) As String
Dim C As Range, S As String
If Rng Is Nothing Then
MyFunction1 = Str
Else
S = ""
For Each C In Rng
S = S & CStr(C.Value)
Next
MyFunction1 = S
End If
End Function
Function MyFunction2(V As Variant) As String
Dim C As Range, S As String
If VarType(V) = vbString Then
MyFunction2 = V
ElseIf TypeName(V) = "Range" Then
S = ""
For Each C In V
S = S & CStr(C.Value)
Next
MyFunction2 = S
Else
Err.Raise 13, , "The argument must be a String or a Range."
End If
End Function
然后尝试:
Debug.Print MyFunction1("test")
Debug.Print MyFunction1(, Range("A1:B3"))
Debug.Print MyFunction2("test")
Debug.Print MyFunction2(Range("A1:B3"))
推荐阅读
- r - 我需要总和值而不是条形图中的计数值
- java - Is it possible to reuse the input without storing it into a variable after used for a condition?
- spring - 无法从 Elastic Beanstalk Docker 连接到 RDS
- google-analytics - Google Analytics / Google Tag Manager - track user engagement time
- c - printf epochtime 显示错误的值
- android - HttpURLConnection 在 targetSdkVersion 29 的某些设备上超时
- javascript - 我——在 Javascript 中
- list - 从列表中获取 itemCount
- angular - 为什么每次都调用 hot observable?
- javascript - 如何使用 express 和 Postman 发出 PUT 请求以更改给定的 MongoDB 字段?