vba - 更改信用卡编码
问题描述
我有一个邮件合并 VBA 代码:
If GetField(oDS, "mCCNumber") <> "" Then
sCCNumber = Right(GetField(oDS, "mCCNumber"), Len(GetField(oDS, "mCCNumber")) - 12)
但是现在我们的 CC #s 只有 4 个没有标记的字符,但有些仍然是 16 个字符。
如何更改此代码以添加“OR”3 个字符(有些是 3,有些是 4)。
另外,我不能对此发表评论以停止这部分
解决方案
首先,GetField(oDS, "mCCNumber")
仅在这两行中被取消引用 3 次 - 将其拉入自己的局部变量中:
Dim ccNumberField As Field
Set ccNumberField = GetField(oDS, "mCCNumber")
实际上,我们更感兴趣的是该领域的内容。您的代码正在对该对象进行隐式默认成员调用Field
- 但 aField
的默认属性是它的Code
:
字段的代码是由字段字符 (
{ }
) 括起来的所有内容,包括前导空格和尾随空格字符。
这意味着您正在使用的字符串比您的代码预期的要长。我认为您会Text
对该领域的以下内容更感兴趣Result
:
Dim ccNumberFieldValue As String
ccNumberFiedValue = ccNumberField.Result.Text
If ccNumberFieldValue <> "" Then
'...
现在,ccNumberFieldValue
应该保存该字段的实际内容。我不是 100% 清楚 OP 到底包含什么。所以我将假设其中之一:
- 最后 4 位数字:
**** **** **** 1234
- 最后 3 位数字:
**** **** **** *234
- Woopsie,所有 16 位数字:
1234 1234 1234 1234
所以首先要做的是抢最后4个;Right$
这样做:
sCCNumber = Right$(ccNumberFiedValue, 4)
这给我们留下了:
1234
*234
从那里您可以IsNumeric
用来确定整个子字符串是否为数字(假设有一个非数字填充字符) - 如果不是,那么您知道您正在查看 3 个字符的变体:
If Not IsNumeric(sCCNumber) Then sCCNumber = Right$(sCCNumber, 3)
推荐阅读
- android - recyclerview 搜索过滤器不起作用?
- html - 如何在移动浏览器设备上显示桌面视图?
- reactjs - 我们如何在媒体上突出显示可搜索列表视图的选定项目?
- jenkins - 从 Jenkins 向 Heroku 推送代码无法正常工作,错误为 "App not compatible with buildpack: https://codon-xxxx.." 。但在手动工作
- hyperledger-fabric - 状态:500,消息:无法获取链码的包
- javascript - 访问 JavaScript '[object Object]'
- android - Lollipop - 执行PendingTransactions 的递归入口
- sql - 计算一行中出现的每个值,并从另一行获取第三个对应值
- javascript - 使用 indexOf 的 Javascript 搜索失败
- python - 训练 CNN 时 DataType 出错