我正在创建几个用户定义函数(UDF's)。我不够熟练,我可以对我自己写最代码。但是,在某些情况下,我有兴趣了解Microsoft如何处理输入,防范错误并优化性能。 有谁知道在哪里可以找到Microsoft用于编写标准Excel公式的确切Visual Basic语法?是否有可能为他们的标准Excel公式查看Microsoft VBA代码?
为了说明,下面是我创建模仿VLOOKUP一个UDF,我想它比微软的功能。例如,微软的代码如何分析第一列?它使用单元格循环还是Match函数?它如何处理错误?
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不希望共享这些信息,这将是令人失望的,但如果有人是肯定我会很感激的确认。
谢谢。
AFAIK Vba资源由Microsoft保留专有权,并且不公开提供 – Steve
'Excel.WorksheetFunction.VLookup'不是用VBA编写的。它会写成类似于C++的东西。正如Excel自身公式所使用的VLOOKUP功能一样。 – YowE3K
拍摄感谢您的反馈,我标记为有帮助。我认为是这种情况,但我认为这可能很容易解决像工作表或VBA保护。也许有人知道一种方式,所以我会继续质疑一段时间。 – PGCodeRider