好的,我有这个公式,它根据名字和姓氏列表生成用户名。现在,虽然这有效,但我希望单元格引用我自己的VBA函数。但是,由于代码少得多,我仍然想使用原始公式。
我有这个公式:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(LEFT(table[[#This Row];[Firstname:]])&table[[#This Row];[Lastname:]]);"æ";"a");"ø";"o");"å";"a")
这基本上会生成用户名。但是,我想通过一个单独的函数来运行它,以确定是否已经使用了用户名。如果是,它应该生成一个稍微不同的用户名。
我正在思考这些问题:
Public Function genUserName(ByVal strFirstName, strLastName As String)
Dim strUsername As String
Set objDomain = GetObject("WinNT://grunnarbeid2.local")
objDomain.Filter = Array("User")
'FormulaR1C1 = "=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(LEFT(tableFaste[[#This Row];[Fornavn:]])&tableFaste[[#This Row];[Etternavn:]]);""æ"";""a"");""ø"";""o"");""å"";""a"")"
'strUsername = ActiveCell.FormulaR1C1
blnFound = False
For Each objUser In objDomain
If objUser.Name = strUsername Then
blnFound = True
Exit For
End If
Next
genUserName = strUsername
End Function
那么,我该如何结合这些呢?
答案 0 :(得分:2)
我建议将genUserName
的功能限制为只检查唯一性,并将现有表格的结果传递给它:
Public Function genUserName(ByVal strUsername As String)
Set objDomain = GetObject("WinNT://grunnarbeid2.local")
objDomain.Filter = Array("User")
blnFound = False
For Each objUser In objDomain
If objUser.Name = strUsername Then
blnFound = True
Exit For
End If
Next
genUserName = strUsername
End Function
然后从像
这样的单元格中调用它=genUserName(SUBSTITUTE( ... ))