我被困在一点点代码上。 我有一个表单,当我单击一个按钮时,它会将所有选定的记录发送到一个电子邮件正文中,其中包含这些记录中列出的电子邮件收据。
将电子邮件添加到Outlook" To"部分如下:
With rst
Do While Not .EOF
strTO = strTO & ![EmailAddress] & ";"
.MoveNext
Loop
End With
olItem.Display
olItem.To = strTO
正如您可以看到代码的形式,它采用字符串strTO
并在记录上添加[EmailAddress]
的值,以及;
而不是移动到下一条记录循环。
我的问题是,是否有一种方法可以创建一个全局函数,您可以在执行代码的olItem.To = strTO
部分之前调用该函数,从根本上清除字符串以删除任何重复项?
编辑:发现我可以正确发布我的答案,而不是编辑我的问题。
答案 0 :(得分:0)
我在全局模块中使用了以下函数。
Public Function getUniqueString(txtToSearch As String) As String
Dim initStr() As String, endStr As String
Dim i As Integer, j As Integer, repInt As Integer
initStr = Split(txtToSearch, ";")
repInt = 0
For i = 0 To UBound(initStr)
For j = 0 To UBound(initStr)
If initStr(i) = initStr(j) Then repInt = (repInt + 1) Mod 2
Next
If repInt < 2 And InStr(endStr, initStr(i)) = 0 Then endStr = endStr & ";" & initStr(i)
repInt = 0
Next
getUniqueString = Right(endStr, Len(endStr) - 1)
End Function
有了这个功能,当我按下按钮时,我会在表单上调出它。
With rst
Do While Not .EOF
strTO = strTO & ![EmailAddress] & ";"
.MoveNext
Loop
End With
Dim strTOn As String
strTOn = getUniqueString(strTO)
olItem.Display
olItem.To = strTOn
我的理解是当函数运行时会发生什么,它需要strTO字符串并将其转换为数组,所以所有内容都与;当分隔符被分开时,它会检查数组中的所有内容与原始字符串相比,如果有重复项,它会将它们删除到新字符串strTOn中,而不是由outlook应用程序的olItem.To函数调用。