我的邮件合并VBA代码为:
If GetField(oDS, "mCCNumber") <> "" Then
sCCNumber = Right(GetField(oDS, "mCCNumber"), Len(GetField(oDS, "mCCNumber")) - 12)
但是现在我们的CC编号只有4个字符,没有令牌,但有些仍带有16个字符。
如何更改此代码以添加“或” 3个字符(有些是3个字符,另一些是4个字符)。
此外,我无法对此发表评论以阻止这一部分
答案 0 :(得分:1)
首先,GetField(oDS, "mCCNumber")
仅在这两行中被取消引用3次-将其拉入其自己的局部变量:
Dim ccNumberField As Field
Set ccNumberField = GetField(oDS, "mCCNumber")
实际上,我们对该领域的内容更感兴趣。您的代码正在对Field
对象进行隐式 default成员调用-但是Field
的默认属性是其Code
:
字段代码是由字段字符(
{ }
)括起来的所有内容,包括前导空格和结尾空格。
这意味着您正在使用的字符串比代码预期的长。我认为您会对字段Text
的{{1}}更加感兴趣:
Result
现在,Dim ccNumberFieldValue As String
ccNumberFiedValue = ccNumberField.Result.Text
If ccNumberFieldValue <> "" Then
'...
应该保留该字段的实际内容。我不是100%从OP确切知道其中包含什么。因此,我将假设其中之一:
ccNumberFieldValue
**** **** **** 1234
**** **** **** *234
因此,要做的第一件事是获取最后的4个。 1234 1234 1234 1234
这样做:
Right$
这使我们要么:
sCCNumber = Right$(ccNumberFiedValue, 4)
1234
从那里,您可以使用*234
确定整个子字符串是否为数字(假设有一个非数字的填充字符)-如果不是,那么您就知道要查看3个字符变体:
IsNumeric