VBA 巧妙处理字符串连接字符串连接是经常需要⽤到的功能,在VBA代码中可以使⽤+也可以使⽤&,似乎是简单的不能再简单的功能,但是实际使⽤过程中也是有⼀些技巧的。
实例:如下数据中提取张三的订单编号,并使⽤半⾓逗号连接。
⽰例代码如下。
【代码解析】
第3⾏代码将数据加载到数组中。
第4~12⾏代码从第2⾏开始循环处理数据。vba编程技巧
第5⾏代码代码根据第⼀列判断姓名是否为“张三”。
如果strMsg为空,说明是定位到的第⼀个符合条件的记录,第7⾏代码直接将订单编号保存到strMsg变量。如果strMsg不为空,第9⾏代码将订单编号保存到strMsg变量,并添加逗号作为分隔符。
第13⾏代码在⽴即窗⼝中输出全部订单号,如下图所⽰。
整个代码过程并不复杂,第6~10⾏需要对于第⼀个订单编号做特殊处理,所以代码⾏数显得⽐较多。其实,可以⽤变通的思路来处理这个问题,⽰例代码如下。Sub  demo1()    Dim  vntArr , i , strMsg    vntArr = [a1].CurrentRegion.Value    For  i = 2 To  UBound (vntArr )        If  vntArr (i , 1) = "张三" Then            If  Len (strMsg ) = 0 Then                strMsg = vntArr (i , 2)            Else                strMsg = strMsg & "," & vntArr (i , 2)            End  If        End  If    Next    Debug .Print  strMsg End  Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14Sub  demo2()    Dim  vntArr , i , strMsg    vntArr = [a1].CurrentRegion.Value    For  i = 2 To  UBoun
d (vntArr )        If  vntArr (i , 1) = "张三" Then strMsg = strMsg & "," & vntArr (i , 2)    Next    Debug .Print  Mid (strMsg , 2)End  Sub
1
2
3
4
5
6
7
8
【代码解析】第5⾏代码并没有对第⼀个订单编号做特殊处理,因此循环结束后,strMsg变量的值为,KA12394,SS97826,EDG9999,第7⾏代码输出结果时,使⽤Mid函数进⾏截断,去除多余的第⼀个
逗号。
⽆论是从代码⾏数和整个的编程逻辑来说demo2都更简洁。
Join可以实现数组的快速连接,所以使⽤数组来实现也是可⾏的。⽰例代码如下。
【代码解析】
第7⾏代码重新上⾯动态数组,并保存已有的数组值。
第8⾏代码将订单编号保存在数组中。
第12⾏代码使⽤Join函数组合数组值,并输出到代码窗⼝。Sub  demo3()    Dim  vntArr , i , strMsg , vntRes (), n    vntArr = [a1].CurrentRegion.Value    n = 0    For  i = 2 To  UBound (vntArr )        If  vntArr (i , 1) = "张三" Then            ReDim  Preserve vntRes (n )            vntRes (n ) = vntArr (i , 2)            n = n + 1        End  If    Next    Debug .Print  Join (vntRes , ",")End  Sub
1
2
3
4
5
6
7
8
9
10
11
12
13

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。