我正在创建几个用户定义函数(UDF)。我足够熟练,我可以自己编写大多数代码。但是,在某些情况下,我有兴趣了解Microsoft如何处理输入,防止错误并优化性能。 有谁知道我在哪里可以找到Microsoft用来编写标准Excel公式的确切Visual Basic语法?
为了说明,下面是我创建的模仿Vlookup的UDF,我想将它与Microsoft的功能进行比较。例如,Microsoft的代码如何分析第一列?它是使用单元循环还是匹配功能?它如何处理错误?
Public Function VLookupPGCodeRider(TextInput As String, SearchRange As Range, _
ColumnIndex As Integer, PartialMatch As Boolean) As String
Dim WS As Worksheet, Rcell As Range
Set WS = Sheets(SearchRange.Parent.Name)
On Error GoTo BadResult
If TextInput = "" Or SearchRange Is Nothing Or Not (IsNumeric(ColumnIndex)) Then
GoTo BadResult
End If
On Error GoTo 0
'I would like to see how MS sets up this loop, or maybe they use match?
'But then how does match work??
For Each Rcell In Intersect(SearchRange.Columns(1), WS.UsedRange).Cells
If Not (PartialMatch) Then 'how 99.9% of users use Vlookup
If Rcell.Value = TextInput Then
VLookupPGCodeRider = Intersect(Rcell.EntireRow, SearchRange.Columns(ColumnIndex)).Value
Exit Function
End If
Else
'what is considered a partial match??
End If
Next Rcell
'if nothing found or error in the beginning of formula...
BadResult:
VLookupPGCodeRider = "#NA"
End Function
同样,我不是专门寻找Vlookup的答案,我只是想看看微软的处理类似公式挑战的方法,我正面对各种各样的UDF。
我已经检查了Excel VBA对象浏览器(2013),我看到了下面的截图,这不是很有用。当我查看我的Excel安装文件夹时,我找不到与工作表函数的命名结构相对应的任何内容。
我认为MS有可能故意不想分享这些信息,这会令人失望,但如果有人确定,我会感谢您的确认。
谢谢。
答案 0 :(得分:6)
Excel.WorksheetFunction.VLookup
等的代码不是用VBA编写的。它将用类似C ++的东西编写。正如Excel中公式使用的VLOOKUP
功能一样。