如果我使用通配符“*”,VBAstring连接不起作用
这段代码连接了一些单元格值创build一个string ,然后在VB数组中search。 如果我不在串联中使用“*” ,它会起作用,如果我这样做,则打破下面的块。
有任何想法吗?
代码工作:
For i = 1 To StringsCount arrStrings(i, 1) = .Range("A" & i + k).Value & "_" & .Range("C" & i + k).Value & "_" & .Range("D" & i + k).Value & "_" & .Range("E" & i + k).Value arrStrings(i, 2) = .Range("A" & i + k).Row k = k + 11 Next i
不起作用的代码:
For i = 1 To StringsCount arrStrings(i, 1) = .Range("A" & i + k).Value & "_" & .Range("C" & i + k).Value & "_" & .Range("D" & i + k).Value & "_" & .Range("E" & i + k).Value & "*" arrStrings(i, 2) = .Range("A" & i + k).Row k = k + 11 Next i
(第二行,在远端,有另外的通配符字符'&' “')。*
阻止“不起作用”下面的这个(引用的行):
interSum = 0 For i = 1 To UBound(arrStrings) For j = LBound(arrCampaignsAmounts, 1) To UBound(arrCampaignsAmounts, 1) If arrStrings(i, 1) = arrCampaignsAmounts(j, 1) Then interSum = interSum + arrCampaignsAmounts(j, 2) End If Next j
SourceSheet.Range(“H”&arrStrings(i,2))。Value = interSum
interSum = 0 Next i
你可以避免通配符,而使用InStr
? 所以,而不是
If arrStrings(i, 1) = arrCampaignsAmounts(j, 1) Then
你会有的
If InStr(arrCampaignsAmounts(j, 1),arrStrings(i, 1)) > 0 Then
与您的最初没有通配符string形成。 这应该工作,因为如果发现不匹配, InStr
将返回0。 同样的,如果你想让你的arrStrings
值始终是你匹配的string的开始,你可以使用=1
而不是>0
。