Ms access 为什么Join()-ing限制为64的Split()返回的子字符串多于64个?

Ms access 为什么Join()-ing限制为64的Split()返回的子字符串多于64个?,ms-access,vba,ms-access-97,Ms Access,Vba,Ms Access 97,我必须将一个字符串限制为最多64个子字符串,这些子字符串除以。输入字符串包含113个子字符串: x2BlackList = "mcc=206,mnc=1,mncLength=2,enbId=180096;mcc=206,mnc=1,mncLength=2,enbId=80459;mcc=206,mnc=1,mncLength=2,enbId=84604;mcc=206,mnc=1,mncLength=2,enbId=180166;mcc=206,mnc=1,mncLength=2,enbId=8

我必须将一个字符串限制为最多64个子字符串,这些子字符串除以
。输入字符串包含113个子字符串:

x2BlackList = "mcc=206,mnc=1,mncLength=2,enbId=180096;mcc=206,mnc=1,mncLength=2,enbId=80459;mcc=206,mnc=1,mncLength=2,enbId=84604;mcc=206,mnc=1,mncLength=2,enbId=180166;mcc=206,mnc=1,mncLength=2,enbId=80279;mcc=206,mnc=1,mncLength=2,enbId=80288;mcc=206,mnc=1,mncLength=2,enbId=80457;mcc=208,mnc=10,mncLength=2,enbId=4791;mcc=206,mnc=1,mncLength=2,enbId=80197;mcc=206,mnc=1,mncLength=2,enbId=80188;mcc=206,mnc=1,mncLength=2,enbId=80195;mcc=206,mnc=1,mncLength=2,enbId=80206;mcc=206,mnc=1,mncLength=2,enbId=181309;mcc=206,mnc=1,mncLength=2,enbId=181218;mcc=206,mnc=1,mncLength=2,enbId=180254;mcc=206,mnc=1,mncLength=2,enbId=80332;mcc=206,mnc=1,mncLength=2,enbId=180340;mcc=206,mnc=1,mncLength=2,enbId=83355;mcc=206,mnc=1,mncLength=2,enbId=180367;mcc=206,mnc=1,mncLength=2,enbId=181222;mcc=206,mnc=1,mncLength=2,enbId=83887;mcc=206,mnc=1,mncLength=2,enbId=181026;mcc=206,mnc=1,mncLength=2,enbId=180356;mcc=206,mnc=1,mncLength=2,enbId=181001;mcc=206,mnc=1,mncLength=2,enbId=84624;mcc=206,mnc=1,mncLength=2,enbId=80209;mcc=206,mnc=1,mncLength=2,enbId=80318;mcc=206,mnc=1,mncLength=2,enbId=80454;mcc=206,mnc=1,mncLength=2,enbId=80471;mcc=206,mnc=1,mncLength=2,enbId=80476;mcc=206,mnc=1,mncLength=2,enbId=80486;mcc=206,mnc=1,mncLength=2,enbId=80526;mcc=206,mnc=1,mncLength=2,enbId=80445;mcc=206,mnc=1,mncLength=2,enbId=80586;mcc=206,mnc=1,mncLength=2,enbId=80212;mcc=206,mnc=1,mncLength=2,enbId=80189;mcc=206,mnc=1,mncLength=2,enbId=80453;mcc=206,mnc=1,mncLength=2,enbId=80474;mcc=206,mnc=1,mncLength=2,enbId=80191;mcc=206,mnc=1,mncLength=2,enbId=181230;mcc=206,mnc=1,mncLength=2,enbId=181394;mcc=206,mnc=1,mncLength=2,enbId=181401;mcc=206,mnc=1,mncLength=2,enbId=83338;mcc=206,mnc=1,mncLength=2,enbId=83395;mcc=206,mnc=1,mncLength=2,enbId=83415;mcc=206,mnc=1,mncLength=2,enbId=180381;mcc=206,mnc=1,mncLength=2,enbId=80180;mcc=206,mnc=1,mncLength=2,enbId=80196;mcc=206,mnc=1,mncLength=2,enbId=80484;mcc=206,mnc=1,mncLength=2,enbId=80204;mcc=206,mnc=1,mncLength=2,enbId=80464;mcc=206,mnc=1,mncLength=2,enbId=80314;mcc=206,mnc=1,mncLength=2,enbId=84580;mcc=206,mnc=1,mncLength=2,enbId=80520;mcc=206,mnc=1,mncLength=2,enbId=83387;mcc=206,mnc=1,mncLength=2,enbId=83376;mcc=206,mnc=1,mncLength=2,enbId=83397;mcc=206,mnc=1,mncLength=2,enbId=83439;mcc=206,mnc=1,mncLength=2,enbId=80324;mcc=206,mnc=1,mncLength=2,enbId=180094;mcc=206,mnc=1,mncLength=2,enbId=80291;mcc=206,mnc=1,mncLength=2,enbId=80293;mcc=206,mnc=1,mncLength=2,enbId=80297;mcc=206,mnc=1,mncLength=2,enbId=80299;mcc=206,mnc=1,mncLength=2,enbId=80307;mcc=206,mnc=1,mncLength=2,enbId=80458;mcc=206,mnc=1,mncLength=2,enbId=80473;mcc=206,mnc=1,mncLength=2,enbId=80502;mcc=206,mnc=1,mncLength=2,enbId=80517;mcc=206,mnc=1,mncLength=2,enbId=80540;mcc=206,mnc=1,mncLength=2,enbId=80583;mcc=206,mnc=1,mncLength=2,enbId=83815;mcc=206,mnc=1,mncLength=2,enbId=83818;mcc=206,mnc=1,mncLength=2,enbId=83823;mcc=206,mnc=1,mncLength=2,enbId=83834;mcc=206,mnc=1,mncLength=2,enbId=84006;mcc=206,mnc=1,mncLength=2,enbId=84018;mcc=206,mnc=1,mncLength=2,enbId=84594;mcc=206,mnc=1,mncLength=2,enbId=84605;mcc=206,mnc=1,mncLength=2,enbId=84610;mcc=206,mnc=1,mncLength=2,enbId=180514;mcc=206,mnc=1,mncLength=2,enbId=180519;mcc=206,mnc=1,mncLength=2,enbId=180523;mcc=206,mnc=1,mncLength=2,enbId=180528;mcc=206,mnc=1,mncLength=2,enbId=180530;mcc=206,mnc=1,mncLength=2,enbId=180611;mcc=206,mnc=1,mncLength=2,enbId=180612;mcc=206,mnc=1,mncLength=2,enbId=180616;mcc=206,mnc=1,mncLength=2,enbId=180618;mcc=206,mnc=1,mncLength=2,enbId=180619;mcc=206,mnc=1,mncLength=2,enbId=180620;mcc=206,mnc=1,mncLength=2,enbId=180623;mcc=206,mnc=1,mncLength=2,enbId=180625;mcc=206,mnc=1,mncLength=2,enbId=180629;mcc=206,mnc=1,mncLength=2,enbId=180814;mcc=206,mnc=1,mncLength=2,enbId=181254;mcc=206,mnc=1,mncLength=2,enbId=181275;mcc=206,mnc=1,mncLength=2,enbId=181466;mcc=206,mnc=1,mncLength=2,enbId=181482;mcc=206,mnc=1,mncLength=2,enbId=181648;mcc=206,mnc=1,mncLength=2,enbId=181737;mcc=234,mnc=10,mncLength=2,enbId=504599;mcc=234,mnc=10,mncLength=2,enbId=504699;mcc=234,mnc=10,mncLength=2,enbId=505533;mcc=234,mnc=10,mncLength=2,enbId=505559;mcc=234,mnc=10,mncLength=2,enbId=505563;mcc=234,mnc=10,mncLength=2,enbId=505627;mcc=234,mnc=10,mncLength=2,enbId=505711;mcc=234,mnc=10,mncLength=2,enbId=505805;mcc=234,mnc=10,mncLength=2,enbId=506130;mcc=234,mnc=10,mncLength=2,enbId=506624;mcc=234,mnc=10,mncLength=2,enbId=506752;mcc=234,mnc=10,mncLength=2,enbId=506888"
使用
Split
我可以将子字符串的数量限制为64:

Dim List() As String, _
    Item As Variant, _
    Counter As Long
Counter = 0
List = Split(x2BlackList, ";", 64)
For Each Item In List
    Counter = Counter + 1
Next
Debug.Print Counter
调试窗口指示已计数的64个元素。使用
Join
我想用
将这64个元素放入一个字符串中作为分隔符:

NewBlackList = Join(List, ";")
Debug.Print NewBlackList
但是
NewBlackList
包含所有113个子字符串。我已经尝试了上面的代码,也尝试了下面的简化版本(我更愿意使用),但两者都没有将字符串限制为64个子字符串

SetBlackList = Join(Split(x2BlackList, ";", 64), ";")

为什么
Join()
使用
Split(,,64)
返回的子字符串多于64个?

函数的第三个参数对返回的元素数量进行了限制。然而,这并不意味着失去更多的元素。在最后一个元素中,它们都返回为未拆分

因此,您将字符串拆分为最多64个子字符串。在这种情况下,第64个元素是元素64到113的未分割值

在结果数组上运行
Join()
时,将返回原始字符串

您需要做的是
Split()
字符串,然后丢弃不需要的元素:

List = Split(x2BlackList, ";")

If UBound(List) > 63 Then
    ReDim Preserve List(63)
End If

NewBlackList = Join(List, ";")