更改信用卡编码

时间:2019-03-01 18:17:45

标签: vba

我的邮件合并VBA代码为:

If GetField(oDS, "mCCNumber") <> "" Then
    sCCNumber = Right(GetField(oDS, "mCCNumber"), Len(GetField(oDS, "mCCNumber")) - 12) 

但是现在我们的CC编号只有4个字符,没有令牌,但有些仍带有16个字符。

如何更改此代码以添加“或” 3个字符(有些是3个字符,另一些是4个字符)。

此外,我无法对此发表评论以阻止这一部分

1 个答案:

答案 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确切知道其中包含什么。因此,我将假设其中之一:

  • 最后4位数字:ccNumberFieldValue
  • 最后3位数字:**** **** **** 1234
  • Woopsie,全16位:**** **** **** *234

因此,要做的第一件事是获取最后的4个。 1234 1234 1234 1234这样做:

Right$

这使我们要么:

  • sCCNumber = Right$(ccNumberFiedValue, 4)
  • 1234

从那里,您可以使用*234确定整个子字符串是否为数字(假设有一个非数字的填充字符)-如果不是,那么您就知道要查看3个字符变体:

IsNumeric