我想知道一些事情。
我有一个 VBA 宏 Excel 代码,用于检查唯一公民号码并返回它是否正确。
但是要启动它,我必须在启动 Excel 时调用宏,按 ALT+F11,而不是 F5,然后输入代码,编译它,然后在 Excel 函数中输入我的函数 Check_JMBG(adr),我可以调用它在 Excel 工作表中。
但是当我启动其他一些 Excel 文件时,我必须再次为此创建宏。
现在我想知道我可以做一个例子,当我启动其他一些 Excel 文件并像内置一样立即调用它时,如何让我的函数立即出现在那里?
调用函数示例:Check_JMBG(A1),在A1中输入填充为文本:2003969265121
以下是检查唯一公民号码的代码:
' Function for checking JMBG validation
Function Check_JMBG(JMBG As String) As String
If (Len(JMBG) <> 13) Then
Check_JMBG = "ERROR: Length of JMBG is not 13!"
ElseIf Not IsNumeric(JMBG) Then
Check_JMBG = "ERROR: JMBG contains non-numerical characters"
ElseIf Not fctBlnCheckDate(JMBG) Then
Check_JMBG = "ERROR: Wrong date entered!"
ElseIf fctBlnCheckSum(JMBG) Then
Check_JMBG = "ERROR: Wrong checksum!"
Else
Check_JMBG = "JMBG is correct"
End If
End Function
' Function to check JMBG day, month, year validation
Private Function fctBlnCheckDate(JMBG As String) As Boolean
Dim intDay As Integer, intMonth As Integer, intYear As Integer
Dim datCheck As Date
intDay = Int(Left(JMBG, 2))
intMonth = Int(Mid$(JMBG, 3, 2))
intYear = Int(Mid$(JMBG, 5, 3)) + 1000
datCheck = DateSerial(intYear, intMonth, intDay)
fctBlnCheckDate = _
(Year(datCheck) = intYear) And _
(Month(datCheck) = intMonth) And _
(Day(datCheck) = intDay)
End Function
' Function to check JMBG control number and control sum
Private Function fctBlnCheckSum(JMBG As String) As Boolean
Dim intCheckSum As Integer, i As Integer
For i = 1 To 13
intCheckSum = intCheckSum + Int(Mid$(JMBG, i, 1)) * (IIf(i < 7, 8, 14) - i)
Next
fctBlnCheckSum = (intCheckSum Mod 11) <> 0
End Function